Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
1、yaml 基础配置
version: '2.3'
services:
web:
image: nginx:latest
ports:
- "8001:80"
volumes:
- "/share/docker-compose/nginx/conf/nginx.conf:/etc/nginx/nginx.conf"
- "/share/docker-compose/nginx/conf/conf.d:/etc/nginx/conf.d"
- "/share/docker-compose/nginx/log:/var/log/nginx"
- "/share/docker-compose/nginx/html:/usr/share/nginx/html"
logging:
driver: json-file
options:
max-size: "200k" # 单个文件大小为200k
max-file: "10"
healthcheck:
test: [ "CMD", "curl", "-f", "http://localhost:80" ] # 设置检测程序
interval: 1m30s # 设置检测间隔
timeout: 10s # 设置检测超时时间
retries: 3 # 设置重试次数
start_period: 40s
restart: always
version: 指定本 yml 依从的 compose 哪个版本制定的
services: 服务配置
web:服务名,自定义,不可与镜像名重启
image: 使用的镜像名
ports: 容器对外映射的端口
volumes: 宿主挂载到容器内的路径
logging:日志配置
healthcheck: 健康检测
restart: 重启策略,always容器总是重新启动
2、常用命令
后台启动
docker-compose up -d
停止应用
docker-compose down
重启应用
docker-compose restart
查看服务状态
docker-compose ps
查看日志
docker-compose logs
进入容器
docker-compose exec <service_name> bash
3、yaml参考
nginx
web:
image: nginx:latest
ports:
- "8001:80"
volumes:
- "/share/docker-compose/nginx/conf/nginx.conf:/etc/nginx/nginx.conf"
- "/share/docker-compose/nginx/conf/conf.d:/etc/nginx/conf.d"
- "/share/docker-compose/nginx/log:/var/log/nginx"
- "/share/docker-compose/nginx/html:/usr/share/nginx/html"
logging:
driver: json-file
options:
max-size: "200k" # 单个文件大小为200k
max-file: "10"
healthcheck:
test: [ "CMD", "curl", "-f", "http://localhost:80" ] # 设置检测程序
interval: 1m30s # 设置检测间隔
timeout: 10s # 设置检测超时时间
retries: 3 # 设置重试次数
start_period: 40s
restart: always
mysql
db:
image: mysql:8.0.20
ports:
- "3307:3306"
volumes:
- "/share/docker-compose/mysql/conf:/etc/mysql"
- "/share/docker-compose/mysql/logs:/logs"
- "/share/docker-compose/mysql/data:/var/lib/mysql"
- "/etc/localtime:/etc/localtime"
environment:
- MYSQL_ROOT_PASSWORD=123456
logging:
driver: json-file
options:
max-size: "200k" # 单个文件大小为200k
max-file: "10"
healthcheck:
test: [ "CMD", "curl", "-f", "http://localhost:3306" ] # 设置检测程序
interval: 1m30s # 设置检测间隔
timeout: 10s # 设置检测超时时间
retries: 3 # 设置重试次数
start_period: 40s
restart: always
reids
redis:
image: redis:latest
ports:
- "6379:6379"
volumes:
- /share/docker-compose/redis/data:/data
- /share/docker-compose/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf
- /share/docker-compose/redis/logs:/logs
command: redis-server /usr/local/etc/redis/redis.conf
logging:
driver: json-file
options:
max-size: "200k" # 单个文件大小为200k
max-file: "10"
healthcheck:
test: [ "CMD", "curl", "-f", "http://localhost:6379" ] # 设置检测程序
interval: 1m30s # 设置检测间隔
timeout: 10s # 设置检测超时时间
retries: 3 # 设置重试次数
start_period: 40s
restart: always