### 常用命令
> 以下命令都需要在 .yml 文件所在目录执行
~~~
- 启动所有容器
docker-compose up
docker-compose up -d
- 重新编译并启动所有容器
docker-compose up --build
- 启动所有容器
docker-compose start
- 重启所有容器
docker-compose restart
- 停止所有容器
docker-compose stop
- 销毁所有容器
docker-compose down
- 重新编译服务镜像
docker-compose build --force-rm --no-cache
- 重新启动服务
docker-compose up -d --force-recreate
~~~
### 参数说明
~~~
#版本号
version: "3"
#服务
services:
#服务名称:(mysql服务)
db:
# 构建镜像:指定mysql dockerfile路径
build: ./mysql
# 启动容器后执行的命令,常用于以下格式
# command:
# - /bin/sh
# - -c
# - |
# echo 192.168.1.126 servicehost >> /etc/hosts
# java -jar /usr/local/service-a.jar
# --default-authentication-plugin=mysql_native_password 类似于如下
# docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name cs_mysql mysql:5.7 --default-authentication-plugin=mysql_native_password
command: --default-authentication-plugin=mysql_native_password
#磁盘映射。./db_data 是宿主的目录。后者是容器里的目录。
volumes:
- ${MYSQL_DATA_DIR}:/var/lib/mysql
- ${MYSQL_LOG}:/var/log/mysql
# 配置容器之间的网络互通和隔离 (本例中db与nginx相互隔离,php与两者互通)
networks:
- database
restart: always
# 端口映射:前者是宿主的。后者是容器里端口
ports:
- "${MYSQL_PORT}:3306"
# 环境变量
environment:
#mysql的root密码
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
#容器会创建的数据库
MYSQL_DATABASE: dockerdb
#test用户
MYSQL_USER: ${MYSQL_TEST_USER}
#test用户的密码
MYSQL_PASS: ${MYSQL_TEST_PASSWORD}
#=======================================================
#服务名称:(php-fpm服务)
php:
#构建镜像:指定fpm dockerfile路径
build: ./php-fpm
# 依赖的服务:会在容器里的host文件里添加 一条记录。访问db,即可访问mysql的服务。
# 与link的区别在于:使用link的话,被依赖的容器在未启动的情况下,A容器先启动会报错。而depends_on则不会。
depends_on:
- db
networks:
- database
- server
#目录映射
volumes:
- ${SOURCE_DIR}:/www
- ${PHP_FPM_LOG}:/var/log/php-fpm
- ${PHP_LOG}:/var/log/php
restart: always
#=======================================================
#服务名称:(nginx服务)
nginx:
#构建镜像:指定nginx dockerfile路径
build: ./nginx
depends_on:
- php
networks:
- server
#目录映射
volumes:
- ${SOURCE_DIR}:/www
- ${NGINX_LOG_DIR}:/var/log/nginx
- ${NGINX_CONFD_DIR}:/etc/nginx/conf.d
#端口映射
ports:
- "${HTTP_HOST}:80"
restart: always
~~~
### 参考文献
> yii2 lnmp :https://gitee.com/linwx/Yii2Docker
> https://github.com/yeszao/dnmp
> https://github.com/duiying/Docker-LNMP
> 链接: https://pan.baidu.com/s/1vOY5sjGgGIi-XKaLnZltSg 提取码: sxzb
> https://github.com/jianyan74/lnmp-dockerfiles
> https://github.com/jianyan74/dockerfiles