全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-21 5 分钟 ✍️ juanwangdev

多环境配置管理

不同环境需要不同配置,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 注入环境变量

📝 发现内容有误?点击此处直接编辑

← 上一篇 Docker in Docker
下一篇 → 容器化测试环境
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库