Compose 的演进

在早期的 Docker Compose 还是采用 Python 开发的时候,那个时候支持 extends,通过这种方式将服务与环境分开管理,这样可以满足复杂的环境需求。

随着 Docker Compose 从 Python 迁移到 Go 之后,这一功能便不再支持,而是通过 -f 指定多个服务编排文件来实现模块化编排。

而这种方式则不那么友好,如果在 A 服务中依赖了 B,那么恰好没有通过 -f 参数来指定 B 所在的配置文件,那么就会导致 Compose 执行失败!

Include 功能

自 Docker Compose 2.20 版本起,将支持新的 include 功能,该功能类似 extends 但也有些许不同。

可以看到,通过使用 include 可以整合 compose 编排文件和 env 环境变量:

官方示例

这让复杂的项目编排文件得以拆分成多个小的文件,并且提升了服务编排的可重用性!

I hope this is helpful, Happy hacking…