docker-compose.yml配置文件最全选项详解
以下是针对 docker-compose.yml
配置文件的选项详解,综合多个权威文档整理而成:
一、基础配置结构
version
与name
•version
:定义 Compose 文件格式版本(如'3.8'
),不同版本支持的功能不同。•
name
(新版替代version
):指定项目名称,用于区分多环境部署。name: my_project
1services
定义所有服务容器,每个服务对应一个应用组件(如 Web 服务、数据库):services: web: image: nginx:latest db: build: .
1
2
3
4
5
二、服务定义核心选项
镜像与构建
•image
:直接使用现有镜像(支持远程仓库或本地镜像)。•
build
:基于 Dockerfile 构建镜像,支持自定义上下文路径和参数:build: context: ./app dockerfile: Dockerfile-prod args: NODE_ENV: production
1
2
3
4
5端口与网络
•ports
:映射宿主机与容器端口(支持范围映射和协议指定):ports: - "8080:80" # 短格式 - target: 3306 # 长格式(v3.2+) published: 13306 protocol: tcp mode: host
1
2
3
4
5
6•
networks
:指定容器加入的自定义网络,支持多网络隔离:networks: - frontend
1
2数据卷与持久化
•volumes
:支持绑定挂载、命名卷和临时卷:volumes: - /opt/data:/var/lib/mysql # 宿主机目录绑定 - db_data:/var/lib/mysql # 命名卷(需在顶级volumes定义) - type: tmpfs # 临时内存卷 target: /cache
1
2
3
4
5环境变量与命令
•environment
:设置容器内环境变量:environment: MYSQL_ROOT_PASSWORD: "secret" - DEBUG=true # 数组语法
1
2
3•
command
:覆盖容器默认启动命令:command: ["python", "app.py"]
1容器元数据
•container_name
:自定义容器名称(需唯一)。•
restart
:定义容器重启策略(如always
、on-failure
)。
三、高级配置选项
依赖与健康检查
•depends_on
:定义服务启动顺序,支持健康状态条件:depends_on: db: condition: service_healthy
1
2
3•
healthcheck
:自定义健康检测逻辑:healthcheck: test: ["CMD", "curl", "-f", "http://localhost"] interval: 30s timeout: 10s
1
2
3
4资源限制
•deploy.resources
(仅 Swarm 模式):限制 CPU/内存:deploy: resources: limits: cpus: '0.5' memory: 512M
1
2
3
4
5日志与调试
•logging
:配置日志驱动和滚动策略:logging: driver: json-file options: max-size: "200k" max-file: "10"
1
2
3
4
5
四、扩展功能
多环境配置
• 通过-f
指定不同 Compose 文件(如docker-compose.prod.yml
)。• 使用环境变量文件(
.env
)动态注入配置。复用配置模板
• 通过x-
前缀定义可复用配置块:x-logging: &default-logging driver: json-file options: { max-size: "200k", max-file: "10" } services: web: logging: *default-logging
1
2
3
4
5
6
五、实用命令参考
启动与停止
•docker-compose up -d
:后台启动服务。•
docker-compose down --volumes
:清理容器、网络及数据卷。调试与监控
•docker-compose logs -f web
:实时查看服务日志。•
docker-compose ps
:查看容器状态。
以上内容综合了 Docker 官方文档及多个实践案例,覆盖了 90% 以上的常用配置场景。更详细的选项可参考 Docker Compose 官方文档 (opens new window)。