多环境配置管理
不同环境需要不同配置,Compose 支持配置文件覆盖实现多环境部署。
基础配置
YAML
# docker-compose.yml(开发环境)
version: '3.8'
services:
app:
build: .
environment:
NODE_ENV: development
LOG_LEVEL: debug
ports:
- "3000:3000"
db:
image: postgres:15
environment:
POSTGRES_PASSWORD: dev_password
环境覆盖
生产环境覆盖
YAML
# docker-compose.prod.yml
version: '3.8'
services:
app:
image: my-app:prod # 使用预构建镜像
environment:
NODE_ENV: production
LOG_LEVEL: error
ports: [] # 不暴露端口(使用反向代理)
deploy:
replicas: 3
resources:
limits:
memory: 512M
db:
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD} # 从环境变量读取
volumes:
- db-data:/var/lib/postgresql/data
volumes:
db-data:
使用方式
Bash
# 开发环境
docker compose up -d
# 生产环境(覆盖配置)
docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d
测试环境
YAML
# docker-compose.test.yml
version: '3.8'
services:
app:
build: .
environment:
NODE_ENV: test
DB_HOST: test-db
depends_on:
- test-db
test-db:
image: postgres:15
environment:
POSTGRES_PASSWORD: test_password
Bash
# 测试环境
docker compose -f docker-compose.yml -f docker-compose.test.yml up -d
环境变量管理
Bash
# .env.development
DB_PASSWORD=dev_password
LOG_LEVEL=debug
# .env.production
DB_PASSWORD=${VAULT_DB_PASSWORD}
LOG_LEVEL=error
# 使用
docker compose --env-file .env.production up -d
CI/CD 集成
YAML
# GitHub Actions
- name: Deploy
run: |
docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d
env:
DB_PASSWORD: ${{ secrets.DB_PASSWORD }}
要点总结
- 基础配置
docker-compose.yml,环境覆盖docker-compose.<env>.yml - 使用
-f参数组合多个配置文件,后面的覆盖前面的 - 生产环境使用预构建镜像,开发环境 build
- 敏感信息通过环境变量传入,不要硬编码
- CI/CD 通过 secrets 注入环境变量
📝 发现内容有误?点击此处直接编辑