Docker搭建 Nginx+PHP+MySQL 环境并部署WordPress实践

2020-06-17 06:37:18易采站长站整理

把docker-compose.yml文件放置在/home/docker目录下。


version: '3'
# 定义三个服务nginx,php,mysql
services:
nginx:
# 依赖php服务,意味着在启动nginx之前先启动php
depends_on:
- php
# nginx镜像的路径
image: registry.cn-hangzhou.aliyuncs.com/centos-bz/nginx
# 容器的/home/docker/nginx目录挂载主机中的/home/docker/nginx目录,
# 这样使nginx容器把网站文件和目录存放到主机目录中,持久化和方便管理
volumes:
- /home/docker/nginx:/home/docker/nginx
# nginx意外退出时自动重启
restart: always

# 映射80和443端口
ports:
- "80:80"
- "443:443"

# 容器名称
container_name: nginx
php:
depends_on:
- mysql
image: registry.cn-hangzhou.aliyuncs.com/centos-bz/php-fpm
restart: always
volumes:
- /home/docker/nginx/www:/home/docker/nginx/www
- /home/docker/php:/home/docker/php
container_name: php

mysql:
image: registry.cn-hangzhou.aliyuncs.com/centos-bz/mysql
volumes:
- /home/docker/mysql:/home/docker/mysql
restart: always
# 设置MYSQL_ROOT_PASSWORD环境变量,这里是设置mysql的root密码。这里为root。
environment:
MYSQL_ROOT_PASSWORD: root
container_name: mysql

启动环境

在/home/docker目录执行:


docker-compose up

查看nginx,php,mysql是否正常启动,如果正常,ctrl-c停止,再执行:


docker-compose up -d

这里compose命令就在后台启动了。

执行docker ps查看容器运行状态。

连接问题

容器之间可以通过容器名称来连接,如nginx配置文件中连接php的代码fastcgi_pass php:9000,网站数据库配置文件使用mysql:3306。

日常运维

 迁移

比如A主机迁移到B主机。只需要三步。

1.打包A主机的/home/docker目录,传输到B主机相同位置

2.配置B主机docker环境

3.在B主机的/home/docker目录下执行docker-compose up -d

导出导入数据库

把centos.sql.gz数据库文件导入到centos数据库:


gunzip < centos.sql.gz | docker exec -i mysql mysql -uroot -proot centos

把centos数据库导出到centos.sql.gz


docker exec -i mysql mysqldump -uroot -proot centos | gzip > centos.sql.gz

备份

推荐使用ezhttp一键备份设置:


wget centos.bz/ezhttp.zip
unzip ezhttp.zip
cd ezhttp-master
./start.sh