首先安装docker-compose工具,该工具没有在docker安装包中,需要单独安装,compose是启动管理多个容器应用的便捷工具。可以参考官方,看看工具使用教程。
PHP的镜像可以使用官方预留的几个镜像,也可以自己制作镜像,这里我使用的是自己制作的镜像,已经推到hub上,欢迎使用。制作过程,在文章PHP镜像制作
docker-compose.yml文件如下:
version: "3"
services:
php:
image: linlong/php7.3.4-fpm
networks:
- frontend
deploy:
replicas: 1
restart: always
volumes:
- ./php/php-fpm.conf:/usr/local/etc/php-fpm.conf
- ./php/php-fpm.d:/usr/local/etc/php-fpm.d
- ./php/php:/usr/local/etc/php
- ./nginx/html:/usr/share/nginx/html
depends_on:
- mysql
container_name: "php"
mysql:
image: mysql:5.7
networks:
- frontend
deploy:
replicas: 1
restart: always
volumes:
- ./mysql/conf:/etc/mysql
- ./mysql/logs:/var/log/mysql
- ./mysql/data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: "linlong"
container_name: "mysql"
nginx:
image: nginx:latest
ports:
- "81:80"
depends_on:
- php
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
- ./nginx/html:/usr/share/nginx/html
networks:
- frontend
restart: always
container_name: "nginx"
networks:
frontend:
需要注意的部分是,volumes配置,我开始单独docker run 各软件,从nginx容器,PHP容器中找到配置文件和一些目录,并使用docker cp拷贝到宿主机中,然后在通过volumes挂载。此外,新增了一个networks用于容器之间进行连接,比如在nginx.conf中的配置PHP,由原有的127.0.0.1:9000替换为php:9000即可访问。PHP和MySQL并没有作端口映射,只做了Nginx80端口与宿主机81端口映射,可以替换为宿主机的80。
配置完成后,docker-compose up -d即可,注意该命令在当前目录寻找docker-compose.yml配置文件进行解析。