# 在含有 docker-compose.yml 的文件夹下 构建容器
# 如有使用 Dockerfile 在修改 Dockerfile 文件之后再次执行如下即可应用修改
docker-compose up -d

# 停止 docker-compose.yml 里面的所有容器
docker-compose stop

# 删除 docker-compose.yml 里面的所有容器
docker-compose rm

# 查看 docker-compose.yml 里面 nginx 的日志
docker-compose logs -f nginx

# 重启 docker-compose.yml 里面的某一个容器
docker-compose restart nginx
#### start 启动 stop 停止 #####
————————————————
版权声明:本文为CSDN博主「滥情丶」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/q85795362/article/details/82770670

我在使用的过程中主要遇到的问题是nginx cgi与php扩展问题,反复安装几次之后终于成功。

1、使用docker-compose rm删除容器时,通过up -d再次安装,发现容器内的数据还是之前的旧数据

解决办法:docker stop <container>   docker rmi <image>

2、环境配置好通过nginx访问php页面返回空白,html文件返回正常

解决办法:

检查你的nginx.conf文件中是否包含

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;

如果没有包含,请把这几行放到include fastcgi_params代码的下面

3、操作完第2步之后还是没有效果

这可能是php-fpm还没有刷新过来,你可以通过 docker restart php72 命令来重新启动php环境并且刷新扩展

4、删除了docker-compose的容器,也删除了docker image,再次安装的时候容器内部还是旧数据

解决办法:这与之前的那个问题不同,马虎导致的,yml文件中volumes定义了/home/docker/下的mysql、redis、nginx,但是我在/root/中重新拉取git源码时忘记了同步到这几个目录里,所以导致他一直都是最初那个版本的内容,每次拉取git源码的时候

重新设置一下这几个目录中的*.conf文件就好了

我使用的docker-compose是从Docker官网下载的,部署环境的yml是从这里下载的(需要注意的是作者把端口号改掉了,记得改回来)https://gitee.com/imtellyou/docker-compose

我使用的docker-compose.yml文件,包含php7.2、php-redis、php-bopche、redis、mysql5.7、phpmyadmin:

version : '2'
services :
mysql :
build : ./mysql # 使用Dockerfile文件
ports :
- "3306:3306" # 宿主机端口:容器端口
environment :
- MYSQL_ROOT_PASSWORD=123456 # 设置mysql的root密码
volumes:
- /home/docker/mysql/data:/var/lib/mysql:rw # mysql数据文件
- /home/docker/mysql/my.cnf:/etc/my.cnf
networks:
- mysql-net # 加入网络
container_name : mysql57 # 设置容器名字
redis :
build : ./redis
ports :
- "127.0.0.1:6379:6379" # 如不需外网访问容器里面的服务 设置ip地址为127.0.0.1即可
environment :
- appendonly=yes # 打开redis密码设置
- requirepass=123456 # 设置redis密码
networks:
- redis-net
container_name : redis40
php :
build : ./php
ports :
- "127.0.0.1:9000:9000"
volumes :
- /home/docker/web:/var/www/html:rw # web站点目录
- /home/docker/php/php.ini:/usr/local/etc/php/php.ini:ro #php配置文件
- /home/docker/php/www.conf:/usr/local/etc/php-fpm.d/www.conf:ro #php-fpm配置文件
networks:
- php-net
- mysql-net
- redis-net
container_name : php72
nginx :
build : ./nginx
ports :
- "80:80" # 如果宿主机有安装nginx或者apache并且在运行则需要映射到其他端口
- "81:81" # 设置多个站点
- "82:82"
- "83:83"
depends_on :
- "php"
volumes :
- /home/docker/web:/var/www/html:rw
- /home/docker/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
- /home/docker/nginx/server.conf:/etc/nginx/conf.d/default.conf:ro
- /home/docker/nginx/fastcgi_params:/etc/nginx/fastcgi_params:ro
networks:
- php-net
container_name : nginx114
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
container_name: my-phpmyadmin
ports:
- "84:80"
environment:
MYSQL_USER: "root"
MYSQL_PASSWORD: "?CC;XDgqU5NX"
MYSQL_ROOT_PASSWORD: "?CC;XDgqU5NX"
PMA_HOST: mysql57
networks:
- mysql-net
networks: # 创建网络
php-net:
mysql-net:
redis-net:

我使用的nginx.conf文件:

server {
listen 80;
server_name 127.0.0.1;
root /var/www/html;
index index.html index.htm index.php;

location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=/$1 last;
break;
}
autoindex off;
}

location ~ \.php(.*)$ {
fastcgi_pass php72:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "(.+?\.php(/.*))") {
set $real_script_name $1;
set $path_info $2;
}
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}

如果不使用docker来构建环境的话,推荐使用oneinstack这个自动化部署环境的框架,两者都非常的方便,节省了很多时间

再补充一点刚遇到的问题,之前部署的php源码发不上去没有那么多问题,现在一步一个坎,原因是我把新机器上的php.ini的错误等级调整错了

修改 php.ini 中的 error配置下错误显示方式:将error_reporting = E_ALL 修改为

error_reporting = E_ALL & ~E_NOTICE 

docker-compose快速部署环境笔记的更多相关文章

  1. 使用 Docker Compose 快速构建 TiDB 集群

    本文档介绍如何在单机上通过 Docker Compose 快速一键部署一套 TiDB 测试集群.Docker Compose 可以通过一个 YAML 文件定义多个容器的应用服务,然后一键启动或停止. ...

  2. 用Docker swarm快速部署Nebula Graph集群

    用Docker swarm快速部署Nebula Graph集群 一.前言 本文介绍如何使用 Docker Swarm 来部署 Nebula Graph 集群. 二.nebula集群搭建 2.1 环境准 ...

  3. Docker Compose 一键部署LNMP

    Docker Compose 一键部署LNMP 目录结构 [root@localhost ~]# tree compose_lnmp/ compose_lnmp/ ├── docker-compose ...

  4. Docker Compose 一键部署Nginx代理Tomcat集群

    Docker Compose 一键部署Nginx代理Tomcat集群 目录结构 [root@localhost ~]# tree compose_nginx_tomcat/ compose_nginx ...

  5. Docker Compose 一键部署多节点爬虫程序

    Docker Compose 一键部署多节点爬虫程序 目录结构 [root@localhost ~]# tree compose_crawler/ compose_crawler/ ├── cento ...

  6. [phvia/dkc] Docker Compose 快速构建(LNMP+Node)运行环境

    快速构建(LNMP+Node)运行环境. dkc 在此作为 docker-compose 的缩写,你可以理解为 alias dkc=docker-compose 准备 安装 docker 选择1) 从 ...

  7. 利用Docker Compose快速搭建本地测试环境

    前言 Compose是一个定义和运行多个Docker应用的工具,用一个YAML(dockder-compose.yml)文件就能配置我们的应用.然后用一个简单命令就能启动所有的服务.Compose编排 ...

  8. docker swarm快速部署redis分布式集群

    环境准备 四台虚拟机 192.168.2.38(管理节点) 192.168.2.81(工作节点) 192.168.2.100(工作节点) 192.168.2.102(工作节点) 时间同步 每台机器都执 ...

  9. Docker+Nextcloud快速部署个人网盘

    各位大佬好,,,萌新顾北清又回来更新了,今天要快速部署一个人网盘. 有多快呢,,,5分钟吧,因为我们使用Docker部署. Docker基础可以看看我之前的博文.(点这里点这里) 那么,,,开始吧. ...

随机推荐

  1. Java学习笔记【十二、网络编程】

    原计划的学习结束时间是3月4日,目前看来已经延迟了,距离低标还差一些,多方面原因,也不找借口,利用周末赶赶进度,争取本周末把低标完成吧! 参考: http://www.runoob.com/java/ ...

  2. Web开发的分层结构与MVC模式

    1.分层结构 所谓分层结构.把不同的功能代码封装成类,把相同功能的类封装在一个个的包中,也叫层.功能归类如下: 实体类: 封装数据,是数据的载体,在层与层之间进行传递,数据也就传递了.比如说要传递学生 ...

  3. kubernetes资源配置之ReplicaSets

    什么是ReplicaSets? ReplicaSet的目的是维护在任何给定时间运行的稳定的副本Pod集. 因此,它通常用于保证指定数量的相同Pod的可用性 ReplicaSets怎么样工作? Repl ...

  4. jdbc连接数据库方式问题

    1.使用service_name,配置方式:jdbc:oracle:thin:@//<host>:1521/net_grid 2.使用SID,配置方式:jdbc:oracle:thin:@ ...

  5. PXE远程自动安装操作系统

    一.PXE的工作原理 PXE:基于Client/Server的网络模式,支持远程主机通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统:PXE可以引导和安装Windows,linux等多种操 ...

  6. MySQL 关于触发器的操作

    -- 监视某种情况,并触发某种操作 --触发器创建语法四要素 1.监视地点 2.监视事件 3.触发时间 4.触发事件 -- 触发器只能创建在永久表上,不能对临时表创建触发器 create trigge ...

  7. html跳转Controller的路径的问题

  8. ACM-ICPC 2018 沈阳赛区网络预赛 G Spare Tire (素因子分解+容斥)

    . 样例输入复制 4 4 样例输出复制 14 #include<bits/stdc++.h> using namespace std; typedef long long ll; cons ...

  9. typedef简化

    /*** mystrcat: ***/ #include<stdio.h> #include<string.h> char *mystrcat(char *s1,char *s ...

  10. 微信小程序_(组件)swiper轮播图

    微信小程序swiper轮播图组件官方文档 传送门 Learn: swiper组件 一.swiper组件 indicator-dots:是否显示面板指示点[默认值false] autoplay:是否自动 ...