[英]docker-compose.yml invalidate
您好,我有一个用于常规操作的默认配置。 现在我想用第二个 yml 覆盖第一个 yml 中的东西。 准确地说,是卷的位置。
docker-compose.yml:
...
volumes:
database:
driver_opts:
type: none
device: /opt/data/database/
o: bind
但我想在开发时使用默认位置(/var/libs/docker/volumes/project_database/_data)。
根据调用顺序是否有选项的优先级? -f a.yml -f b.yml b.yml 将覆盖 a.yml 或类似的东西?
注释掉 docker-compose.yml 中的行不是我想要 go 的方式。
在 Docker 文档中的Compose 中扩展服务指出:
要使用多个覆盖文件或具有不同名称的覆盖文件,您可以使用
-f
选项指定文件列表。 Compose 按照在命令行中指定的顺序合并文件。
因此,在您的示例( docker -f a.yml -f b.yml...
)中,后面文件中的定义将增加前面文件中的定义。 默认情况下,Compose 知道docker-compose.override.yml
文件,它将以这种方式扩充默认的docker-compose.yml
文件,而无需显式的-f
选项。
同一页面有一个添加和覆盖配置的规则列表。 如果某物是一个逻辑列表(如expose
),则附加后面文件中的值; 如果是逻辑 map (如environment
),则后面文件中的值替换早期文件中的值; 如果是逻辑标量值(如image
),则使用后面文件中的值。
顶级volumes:
没有具体讨论,但我希望它们按照您在本文档中希望它们的方式运行。 如果两个文件都为命名卷提供了定义,则后面文件中的定义优先,但仅在一个或另一个中声明一个卷是有效的。
(这在 Compose Python 代码中得到证实compose.config.load()
采用包含文件名列表的配置并返回合并的字典格式配置。对于除services:
它遵循一个通用的load_mapping()
; 除了一些特定的 object 键之外,这只是执行一个浅合并,其中后面文件中的完整定义替换早期文件中的定义。注意这意味着您必须在覆盖中提供所有每个卷的选项文件。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.