在Docker Compose中扩展服务时,能否覆盖depends_on配置?
问题
当扩展位于另一文件中的服务时,是否可以覆盖原服务的依赖(而非仅添加至原依赖中)?这或许并非扩展服务的常规用法,但好奇是否可行。
示例配置文件
file1.yml
services: serviceA: image: someImage depends_on: serviceB
file2.yml
services: serviceC: extends: file: file1.yml service: serviceA depends_on: [] # 我希望找到一种清除被引用服务依赖的方法
解答
可以的,你在file2.yml里写depends_on: []的方式就是正确的解决方案。
Docker Compose的extends机制处理列表类配置项(比如depends_on、ports、volumes)时,默认行为是合并原服务配置和新配置,但如果你显式设置空列表[],就会完全覆盖原服务的对应配置,而非追加。
你可以通过运行docker-compose -f file2.yml config命令验证效果,输出的最终配置里,serviceC的depends_on会是空的,不会包含原服务里的serviceB。
另外提一句:depends_on仅控制容器启动顺序,不保证依赖服务完全就绪,如果有这类需求,需要配合healthcheck和depends_on的条件判断,但这和覆盖依赖的操作互不影响。
内容的提问来源于stack exchange,提问作者Robert Petty
相关产品推荐
相关产品推荐

