K
K
Kumu's wiki
搜索文档…
Compose 服务扩展
Compose 支持两种共享通用配置的方法:
  • 2、使用 extends 字段扩展单个服务(3.x 已经不支持了,可以忽略该选项)

多个 Compose 文件

你可以使用多个 Compose 文件自定义 Compose 应用,以适配不同的环境或者工作流。

理解多个 Compose 文件

默认,Compose 读取两个文件,一个是 docker-compose.yml,以及另外一个可选的 docker-compose.override.yml 文件。按照约定,docker-compose.yml 包含了基本的配置。override 文件,顾名思义,包含的配置可以覆盖现有服务或者是全新服务配置。
如果一个服务定义多个文件中,Compose 会使用 Adding and overriding configuration 中的规则合并配置。
要使用多个覆盖文件,或者不同名称的覆盖文件,可以使用 -f 选项来指定文件列表。Compose 按照命令行指定配置的顺序来合并。具体见 docker-compose 命令参考 获取更多关于 -f 的信息。
1
$ docker-compose -f docker-compose.yml -f docker-compose.admin.yml run backup_db
Copied!

添加和覆盖配置

将配置从原始服务复制到本地服务。如果原始服务和本地服务中都定义了配置选项,则本地值将替换或扩展原始值。
针对单值选项类似 imagecommand 或者 mem_limit,新值替换旧值。
1
# original service
2
command: python app.py
3
4
# local service
5
command: python otherapp.py
6
7
# result
8
command: python otherapp.py
Copied!
对于多值选项类似 portsexposeexternal_linksdnsdns_search,以及 tmpfs,Compose 会合并这些值:
1
# original service
2
expose:
3
- "3000"
4
5
# local service
6
expose:
7
- "4000"
8
- "5000"
9
10
# result
11
expose:
12
- "3000"
13
- "4000"
14
- "5000"
Copied!
environmentlabelsvolumedevices 中,Compose 会以 local 优先的方式合并这些值:
1
# original service
2
environment:
3
- FOO=original
4
- BAR=original
5
6
# local service
7
environment:
8
- BAR=local
9
- BAZ=local
10
11
# result
12
environment:
13
- FOO=original
14
- BAR=local
15
- BAZ=local
Copied!
1
# original service
2
volumes:
3
- ./original:/foo
4
- ./original:/bar
5
6
# local service
7
volumes:
8
- ./local:/bar
9
- ./local:/baz
10
11
# result
12
volumes:
13
- ./original:/foo
14
- ./local:/bar
15
- ./local:/baz
Copied!
最近更新 1yr ago