与其他一些人一样,我在使用应用程序的微服务架构和按照我想要的方式使用docker-compose
时遇到了问题。
简介:我有qazxsw poi微服务项目(让我们称之为qazxsw poi,qazxsw poi和X
。每个微服务依赖于相同的容器(让我们称之为project A
和project B
。
问题:理想情况下,项目project C
,dependency D
和dependency E
都会在其docker-compose.yml文件中同时存在两个依赖项(A
和B
);然而,这成为一个问题,因为docker compose将这些视为重复的容器,而实际上,我想重用它们。这是一个常见的错误消息:
错误:对于A无法为服务创建容器A:b'Conflict。容器名称“/ A”已被容器“sha”使用。您必须删除(或重命名)该容器才能重用该名称。
从我所看到的,C
使用D
和外部链接。虽然这有效,但它引入了对不同docker-compose yml文件(定义依赖项的文件!)的依赖。
我读过的另一种方法主张在docker中隔离容器组合文件,然后在你想要构建时引用多个文件。同样,虽然这有效,但它肯定不像码头工人那样非常方便。如果我无法找到解决方案,我将采用这种方法。
非单声道回购世界中的其他人(特别是微服务)是否有不同方法的成功?
我一直要求澄清一些例子:
以下是E
和people are recommending that you define the container in one project and reference it的两个不同的组合yml文件:
项目A:
networks
项目B:
project A
有一个叫做project B
的功能。来自文档:
链接到此docker-compose.yml之外或甚至在Compose之外的容器,尤其是对于提供共享或公共服务的容器。
拥有多个version: '2'
services:
dependencyD:
image: dependencyD:latest
container_name: dependencyD
dependencyE:
image: dependencyE:latest
container_name: dependencyE
projectA:
image: projectA:latest
container_name: projectA
depends_on:
- dependencyD
- dependencyE
文件对于将容器组织成有意义的组也很常见。也许你的场景可以使用多个YAML文件和外部链接。