互联网技术 / 互联网资讯 · 2023年11月22日 0

使用docker-compose添加和覆盖配置的教程

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