# 在含有 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. GitLab端口冲突 解决办法

        访问gitlab,出现:502 GitLab在使用的过程中,会开启80端口,如果80端口被其他的应用程序占用,则GitLab的该项服务不能使用,所以访问GitLab会失败.大多数皆是此问题.  ...

  2. Spring的核心jar包

    Spring的主要jar包 四个核心jar包:beans.context.core.expression Spring AOP:Spring的面向切面编程,提供AOP(面向切面编程)的实现Spring ...

  3. 第十一章、特性property

    目录 第十一章.特性property 一.property是一种特殊的属性,访问它时会执行一段功能(函数)然后返回值 二.为什么要用property 三.封装与拓展性 第十一章.特性property ...

  4. jQuery获取表单全部数据

    iQuery如何获取表单的全部数据,用于ajax提交 var formData = {}; var t = $('#Form').serializeArray(); $.each(t, functio ...

  5. Sereja and Brackets CodeForces - 380C (线段树+分治思路)

    Sereja and Brackets 题目链接: CodeForces - 380C Sereja has a bracket sequence s1, s2, ..., *s**n, or, in ...

  6. chrome插件开发-notification API注意事项

    1.win10系统,在系统设置里面,设置开启Google Chrome通知 2.iconUrl必须设置,且图片为ico格式

  7. idea详细设置:编码、代码提示大小写、窗口数量限制、自动导包、serialID、重复代码警告、热部署等设置

    提示: idea ultimate 2018.2 idea-file-setttings设置的是当前项目的配置(只针对当前项目生效)idea-file-others settings相当于以后导入创建 ...

  8. 计划任务 at,cron

    示例:每3小时echo和wall命令

  9. shell小命令

    小括号的用途 cd ..; ls -l (cd ..; ls -l) 如果加了括号,则当前工作目录不发生改变 shell变量类型 环境变量 可以使用 echo  或者env 例如 env|grep 变 ...

  10. 3 监控项、触发器、web监控、nginx监控

    1.自定义监控项 Item 参数文档 https://www.zabbix.com/documentation/3.0/manual/config/items/itemtypes/zabbix_age ...