docker-compose快速部署环境笔记
# 在含有 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快速部署环境笔记的更多相关文章
- 使用 Docker Compose 快速构建 TiDB 集群
本文档介绍如何在单机上通过 Docker Compose 快速一键部署一套 TiDB 测试集群.Docker Compose 可以通过一个 YAML 文件定义多个容器的应用服务,然后一键启动或停止. ...
- 用Docker swarm快速部署Nebula Graph集群
用Docker swarm快速部署Nebula Graph集群 一.前言 本文介绍如何使用 Docker Swarm 来部署 Nebula Graph 集群. 二.nebula集群搭建 2.1 环境准 ...
- Docker Compose 一键部署LNMP
Docker Compose 一键部署LNMP 目录结构 [root@localhost ~]# tree compose_lnmp/ compose_lnmp/ ├── docker-compose ...
- Docker Compose 一键部署Nginx代理Tomcat集群
Docker Compose 一键部署Nginx代理Tomcat集群 目录结构 [root@localhost ~]# tree compose_nginx_tomcat/ compose_nginx ...
- Docker Compose 一键部署多节点爬虫程序
Docker Compose 一键部署多节点爬虫程序 目录结构 [root@localhost ~]# tree compose_crawler/ compose_crawler/ ├── cento ...
- [phvia/dkc] Docker Compose 快速构建(LNMP+Node)运行环境
快速构建(LNMP+Node)运行环境. dkc 在此作为 docker-compose 的缩写,你可以理解为 alias dkc=docker-compose 准备 安装 docker 选择1) 从 ...
- 利用Docker Compose快速搭建本地测试环境
前言 Compose是一个定义和运行多个Docker应用的工具,用一个YAML(dockder-compose.yml)文件就能配置我们的应用.然后用一个简单命令就能启动所有的服务.Compose编排 ...
- docker swarm快速部署redis分布式集群
环境准备 四台虚拟机 192.168.2.38(管理节点) 192.168.2.81(工作节点) 192.168.2.100(工作节点) 192.168.2.102(工作节点) 时间同步 每台机器都执 ...
- Docker+Nextcloud快速部署个人网盘
各位大佬好,,,萌新顾北清又回来更新了,今天要快速部署一个人网盘. 有多快呢,,,5分钟吧,因为我们使用Docker部署. Docker基础可以看看我之前的博文.(点这里点这里) 那么,,,开始吧. ...
随机推荐
- Python lambda 知识点
作者说学会了lambda后,你会用上瘾的,因为让代码复用和简洁. 初识lamdba不太好理解,尤其是它能当着一个变量传递给函数,不过多学着写几个例子就好了,下面是我的学习笔记. lambda 操作符( ...
- [AWS - EC2]如何使用 PuTTY 连接到 Amazon Linux 2 实例。How to Connect Amazon Linux 2 Instance from Windows Using PuTTY
1. 下载 PuTTY 2. 安装到任意目录 3. 打开 PuTTYgen (注意不是 PuTTY), 如图: 选择 RSA , 点击 Load. 找到从 AWS 创建实例的时候生成的 key,要选择 ...
- PHP通过php-java-bridge调用JAVA的jar包里class类
正 文: 有的时候我们需要在PHP里调用JAVA平台封装好的jar包里的class类和方法,一般飘易推荐的做法是采用php-java-bridge做桥接,本文就来介绍一下大致的实现方法. 先简单说 ...
- 【NOIP2017】小凯的疑惑
原题: 小凯手中有两种面值的金币,两种面值均为正整数且彼此互素.每种金币小凯都有 无数个.在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的.现在小 凯想知道在无法准确支付的物品中,最贵的价 ...
- bind的各种辅助工具
dig dig用于测试dns系统,因此,不会查询hosts文件进行解析.
- Java线程池详解及实例
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/aa1215018028/article/ ...
- Python把多行文本合并
在引用论文时,往往格式出错,出现非常多行,这样操作非常不方便.这种方法讲多行合并之后,再处理: # 文件空格和回车键处理工具infile = r'C:\Users\SAM\Desktop\新建文本文档 ...
- mongodb多条件分页查询的三种方法(转)
一.使用limit和skip进行分页查询 public List<User> pageList(int pageNum ,int pageSize){ List<User> u ...
- pdf缩略图生成上传解决方案
前言:因自己负责的项目(jetty内嵌启动的SpringMvc)中需要实现文件上传,而自己对java文件上传这一块未接触过,且对 Http 协议较模糊,故这次采用渐进的方式来学习文件上传的原理与实践. ...
- android动态加载
转载自: http://www.cnblogs.com/over140/archive/2012/03/29/2423116.html http://www.cnblogs.com/over140/a ...