Compose 配置文件参考
本文档介绍 docker-compose.yml 文件的完整配置选项。
基本结构
yaml
version: '3.8'
services:
service-name:
# 服务配置
networks:
# 网络配置
volumes:
# 卷配置服务配置
image
指定使用的镜像:
yaml
services:
web:
image: nginx:latestbuild
构建镜像:
yaml
services:
web:
build:
context: .
dockerfile: Dockerfile
args:
- NODE_ENV=productionports
端口映射:
yaml
services:
web:
ports:
- "8080:80"
- "8443:443"volumes
卷挂载:
yaml
services:
web:
volumes:
- ./data:/app/data
- my-volume:/app/storageenvironment
环境变量:
yaml
services:
web:
environment:
- NODE_ENV=production
- DATABASE_URL=postgres://...或使用 .env 文件:
yaml
services:
web:
env_file:
- .envdepends_on
服务依赖:
yaml
services:
web:
depends_on:
- db
- redis
db:
image: postgres:15
redis:
image: redis:7networks
网络配置:
yaml
services:
web:
networks:
- frontend
- backend
networks:
frontend:
backend:restart
重启策略:
yaml
services:
web:
restart: always # no, always, on-failure, unless-stoppedCompose V3 部署配置
注意
deploy 配置仅在 Docker Swarm 模式下生效。
yaml
version: '3.8'
services:
web:
image: nginx
deploy:
replicas: 3
resources:
limits:
cpus: '0.5'
memory: 512M
reservations:
cpus: '0.25'
memory: 256M
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 3完整示例
yaml
version: '3.8'
services:
web:
build: .
image: myapp:latest
ports:
- "3000:3000"
environment:
- NODE_ENV=production
volumes:
- ./app:/app
- app_data:/app/data
depends_on:
- db
- redis
networks:
- app-network
restart: always
db:
image: postgres:15
environment:
POSTGRES_PASSWORD: password
volumes:
- db_data:/var/lib/postgresql/data
networks:
- app-network
redis:
image: redis:7-alpine
networks:
- app-network
volumes:
app_data:
db_data:
networks:
app-network:
driver: bridge