我有一个web应用程序( single ),它是由单个web服务支持的。这个web服务反过来与几个不同的数据库以及下游/后续web服务进行通信。这些web服务通常都有自己的数据库或第三方支持其背后的web服务。
例如:
my-web-app -->
my-main-web-service -->
psql-db
billing-web-service -->
stripe
redis-db
fulfillment-web-service -->
3rd-party-logistics-service
user-service -->
mongo-db所有这些应用程序、服务和数据库都是容器化的(Docker),应用程序和所有四个服务都存在于它们自己的独立项目/回购中。
在本地,我有一个docker-compose.yml文件,它作为一组Docker容器运行上面描述的所有内容。
但是,我也希望能够一次作为一个独立容器(加上它的支持资源/数据库)运行其中的一个服务。
理想情况下,应该有一种方法可以将“雏菊链”码头组合成文件,以便:
如果能够做到这一点,我就不会在所有这些Docker组合文件中拥有重复的容器(“服务”)配置,而且我可以运行我想要的任何Docker组合,它将触发所有正确的服务。
如果我只想运行计费服务及其Redis,我只需要在计费服务内部运行docker-compose [OPTIONS] up,只有这两个组件才能运行。
但是,如果我想在本地运行主Web,那么在其Docker文件上运行docker-compose [OPTIONS] up将首先(以递归方式)为计费、实现和用户服务运行Docker,然后启动它自己的PSQL容器,最后启动主Web容器(一旦所有支持服务都启动并运行)。
网络应用程序也是如此。
可以由Docker或Docker组成吗?的想法是让每个组件(应用程序、服务等)定义自己的Docker组合服务(容器)集,但是要组织依赖项,如果一个组件/项目/回购需要另一个组件/项目/回购,它几乎会将其Docker组合配置“导入”到自己的组件中,并首先运行它。
发布于 2021-11-24 10:45:47
您的里程可能会因您特别想到的不同而有所不同,但是您可以在调用docker-compose时指定多个组合文件。
docker-compose -f dc-base.yml -f dc-service1.yml -f dc-service2.yml
因此,我猜您在运行docker组合时需要自己做正确的链接,但是可以使用不同的文件将其拆分为逻辑单元。
请参阅码头工人撰写文件
https://stackoverflow.com/questions/65959411
复制相似问题