如何解决docker-compose多服务仅命令不同的配置重复问题?
Docker Compose 重复配置抽离方案
方案1:YAML锚点+合并键(单文件内复用首选)
YAML原生支持锚点定义和引用功能,无需额外新增文件,仅需调整现有配置结构即可实现公共配置复用,修改后的示例如下:
version: "3" # 定义公共配置锚点,x-开头的扩展字段不会被Compose识别为服务 x-service-template: &service-template image: my-image tty: true environment: - APP_ENVIRONMENT=dev working_dir: /source volumes: - .:/source:ro services: service-1: <<: *service-template # 引入全部公共配置 command: run_services_1 # 仅定义差异化配置 service-2: <<: *service-template command: run_services_2 # 剩余8个服务按照相同格式添加即可
如果某个服务需要额外添加或覆盖配置,直接在对应服务块下声明即可,新配置会自动和公共配置合并。
方案2:公共配置抽离到独立文件(跨多Compose文件复用首选)
如果这套公共配置需要在多个Compose文件中使用,可以单独抽离为公共模板文件:
- 新建
docker-compose.base.yml存放公共配置:
version: "3" services: base-service: image: my-image tty: true environment: - APP_ENVIRONMENT=dev working_dir: /source volumes: - .:/source:ro
- 在
docker-compose.override.yml中通过extends字段引用模板:
version: "3" services: service-1: extends: file: docker-compose.base.yml service: base-service command: run_services_1 service-2: extends: file: docker-compose.base.yml service: base-service command: run_services_2
内容的提问来源于stack exchange,提问作者szabgab
相关产品推荐
相关产品推荐

