gpt4 book ai didi

docker - 微服务与 Docker Compose : Same Container, 多个项目

转载 作者:行者123 更新时间:2023-12-02 18:21:10 27 4
gpt4 key购买 nike

与其他一些人一起,我在使用应用程序的微服务架构和使用 docker-compose 时遇到了问题。我想要的方式。

概括:
我有 X微服务项目(我们称之为 project Aproject Bproject C 。每个微服务都依赖于相同的容器(我们称之为 dependency Ddependency E

问题:
理想情况下,项目 A , BC全部 在他们的 docker-compose.yml 文件中有两个依赖项( DE );然而,这成为一个问题,因为 docker compose 将这些视为重复的容器,而实际上我想重用它们。这是一个常见的错误信息:

ERROR: for A Cannot create container for service A: b'Conflict. The container name "/A" is already in use by container "sha". You have to remove (or rename) that container to be able to reuse that name.'



据我所见, people are recommending that you define the container in one project and reference it使用 networks和外部链接。虽然这可行,但它引入了对不同 docker-compose yml 文件(定义依赖项的文件!)的依赖。

我读过的另一种方法主张在它们的 docker compose 文件中隔离容器,然后在您想要构建时引用多个文件。同样,尽管这可行,但它肯定不像 docker 通常使用的那么方便。如果我无法找到解决方案,我将采用这种方法。

非单一 repo 世界中的其他人(特别是微服务)是否通过不同的方法取得了成功?

我被要求用一些例子来澄清:

这是 project A 的 2 个不同的 compose yml 文件的样子和 project B :

项目一:
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

项目B:
version: '2'
services:
dependencyD:
image: dependencyD:latest
container_name: dependencyD

dependencyE:
image: dependencyE:latest
container_name: dependencyE

projectB:
image: projectB:latest
container_name: projectB
depends_on:
- dependencyD
- dependencyE

最佳答案

有一个功能叫做 external links .从文档:

Link to containers started outside this docker-compose.yml or even outside of Compose, especially for containers that provide shared or common services.



拥有多个 docker-compose.yml文件也很常见,可以将容器组织成有意义的组。也许您的场景可以使用多个 YAML 文件和外部链接。

关于docker - 微服务与 Docker Compose : Same Container, 多个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52378551/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com