### 常用命令
> 以下命令都需要在 .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