Docker Compose会将原始服务的配置复制到本地环境中。如果在原始服务和本地服务中都设定了某个配置选项,那么本地的值将会覆盖或扩展原有的值。
对于像command这样的单值选项,新的值将直接替换旧的值。
原始服务配置如下:
command: Python app.py
本地服务配置如下:
command: Python otherapp.py
最终结果为:
command: Python otherapp.py
在Docker Compose版本1中,build和image的处理方式是这样的:
如果原始服务定义了image: webapp,而本地服务定义了build: .,那么最终服务将具备build: .,但没有image选项。
这是因为在版本1的文件中,build和image不能同时使用。
对于多个值的选项,例如ports、expose、external_links、DNS、DNS_Search和tmpfs,Docker Compose会将两组值进行合并:
原始服务配置:
expose:
– “3000”
本地服务配置:
expose:
– “4000”
– “5000”
最终结果为:
expose:
– “3000”
– “4000”
– “5000”
对于environment、labels、volumes和devices,Docker Compose会合并条目,并优先使用本地定义的值。对于environment和labels,环境变量或标签名称会决定使用哪个值:
原始服务配置:
environment:
– FOO=original
– BAR=original
本地服务配置:
environment:
– BAR=local
– BAZ=local
最终结果为:
environment:
– FOO=original
– BAR=local
– BAZ=local
在volumes和devices条目中,Docker Compose会合并安装路径:
原始服务配置:
volumes:
– ./original:/foo
– ./original:/bar
本地服务配置:
volumes:
– ./local:/bar
– ./local:/baz
最终结果为:
volumes:
– ./original:/foo
– ./local:/bar
– ./local:/baz
