# 在含有 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. Scrapy框架之Spider模板 转

    一.安装scrapy 首先安装依赖库Twisted pip install (依赖库的路径) 在这个网址http://www.lfd.uci.edu/~gohlke/pythonlibs#twiste ...

  2. windows 下Nginx 入门

    验证配置是否正确: nginx -t 查看Nginx的版本号:nginx -V 启动Nginx:start nginx 快速停止或关闭Nginx:nginx -s stop 正常停止或关闭Nginx: ...

  3. visio的形状默认是蓝色的填充色,怎么设置为白色为默认色?

    如图所示: 设计->主题->选黑白那个 效果如下:

  4. mysql数据库:mysql初识

      1.什么是数据库 *****    存放数据的仓库    已学习的文件操作的缺陷        1.IO操作 效率问题        2.多用户竞争数据        3.网络访问        ...

  5. 使用IDA Pro逆向C++程序

    使用IDA Pro逆向C++程序 附:中科院李_硕博 : IDA用来做二进制分析还是很强大的 .lib程序是不是很容易分析出源码? 这个得看编译选项是怎么设置的 如果没混淆 没太过优化 大体能恢复源码 ...

  6. java 发布订阅

    https://www.cnblogs.com/coderdxj/p/9627310.html java 观察这模式(发布订阅模式)   观察者设计模式定义了对象间的一种一对多的组合关系,以便一个对象 ...

  7. Tomcat基础知识

    介绍Tomcat之前先介绍下Java相关的知识. 各常见组件: 1.服务器(server):Tomcat的一个实例,通常一个JVM只能包含一个Tomcat实例:因此,一台物理服务器上可以在启动多个JV ...

  8. vue项目,百度地图api高亮选取区域,高亮某个地区,行政区域等

    效果如下: var blist = [] ,maxZoom: });// 创建地图实例 var point = new window.BMap.Point(89.48,31.57); map.cent ...

  9. 数据库连接windows身份验证、sql验证

    windows身份验证:"server=.;database=Northwind;Integrated Security=True;" sql验证:"server=.;d ...

  10. Libreoffice/Office:禁止首字母自动大写功能

     造冰箱的大熊猫@cnblogs 2019/1/24 在LibreOffice(5.1.6.2)中,要禁止或者使能首字母自动大写功能,点击菜单项“Tools>>AutoCorrect Op ...