Docker Compose 脚本文件编写指南
·
Docker Compose基本结构
Docker Compose 文件采用 YAML 格式,核心字段包括 version、services、networks 和 volumes。以下是一个基础模板:
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "80:80"
db:
image: postgres:13
environment:
POSTGRES_PASSWORD: example
定义服务与容器配置
每个服务在 services 下声明,支持以下常见配置项:
image:指定容器镜像(如redis:alpine)。build:通过本地Dockerfile构建镜像(需指定context路径)。ports:映射主机端口到容器端口(格式为"HOST:CONTAINER")。environment:设置环境变量(支持键值对或列表)。volumes:挂载主机目录或命名卷到容器路径。
示例:
services:
app:
build: ./app
ports:
- "5000:5000"
environment:
FLASK_ENV: development
volumes:
- ./app:/code
网络与存储配置
- 网络:默认创建 bridge 网络,可通过
networks自定义。networks: app_network: driver: bridge - 存储卷:使用
volumes声明持久化数据。volumes: db_data: {}
依赖与健康检查
depends_on:控制服务启动顺序(不等待容器就绪)。healthcheck:定义容器健康状态检测逻辑。services: redis: image: redis healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s
多环境配置扩展
通过 docker-compose.override.yml 覆盖或扩展配置。例如开发环境启用调试工具:
# docker-compose.override.yml
services:
web:
volumes:
- ./debug-tools:/tools
资源限制与部署
deploy:指定资源限制(仅 Swarm 模式生效)。services: worker: deploy: resources: limits: cpus: '0.5' memory: 512M
变量与模板复用
使用 .env 文件或 ${VARIABLE} 语法实现动态配置:
services:
db:
image: postgres:${POSTGRES_VERSION}
对应的 .env 文件:
POSTGRES_VERSION=13
最佳实践建议
- 优先使用
docker-compose config验证文件语法。 - 避免硬编码敏感信息,通过
secrets或环境变量管理。 - 为生产环境添加
restart_policy确保服务高可用。
更多推荐

所有评论(0)