升级Docker Compose至2.x后,配置文件合并失败如何解决?
解决Docker Compose 2.x多配置文件合并时的extends报错问题
问题原因
Docker Compose 2.x调整了extends跨文件引用的解析逻辑:1.x版本会先合并所有指定的配置文件,再解析服务继承关系;而2.x版本按文件加载顺序逐个解析,跨文件继承时必须显式指定被继承服务所在的配置文件,否则会出现服务找不到的错误。
修复方案
修改docker-compose.build.yml中的extends语法,添加file字段指定被继承服务所在的主配置文件路径:
修改后的docker-compose.build.yml内容:
version: '2' services: service-prebuilt: extends: file: docker-compose.yml service: service build: $CP_BUILD_FORCE_NO_BUILD_CONTEXT image: $CP_BUILD_BFF_IMAGE test-prebuilt: extends: file: docker-compose.yml service: test build: $CP_BUILD_FORCE_NO_BUILD_CONTEXT image: $CP_BUILD_BFF_IMAGE
说明
- 通过
file字段明确告知Compose 2.x,service和test服务定义在当前目录的docker-compose.yml中,这样就能正确解析继承关系。 - 如果主配置文件不在当前目录,需将
file的值改为对应的相对或绝对路径。
修改完成后,执行原命令即可正常运行:
docker-compose -f docker-compose.yml -f docker-compose.build.yml up
内容的提问来源于stack exchange,提问作者Yamikuronue
相关产品推荐
相关产品推荐

