gpt4 book ai didi

docker - 如何在微服务架构中使用 docker-compose 最好地处理共享服务进行本地开发?

转载 作者:行者123 更新时间:2023-12-04 06:43:11 25 4
gpt4 key购买 nike

尝试建立一种有效的模式,允许我的所有服务之间进行通信,并允许同时在多个服务上进行本地开发。我目前正在使用 docker compose 为我的应用程序设置本地开发。我的基本思路docker-compose.yml看起来像这样。

version: '3'
services:
web:
<web_config>
worker:
<worker_config>
service-a:

我在质疑如何处理 service-a .
service-a我正在运行的任何本地应用程序都需要它。因此,如果我同时运行此应用程序和另一个应用程序,它们都需要与 service-a 通信。 .

service-a在自己的撰写实例中运行?如果是这样,是 networks我的所有应用程序与我的所有应用程序进行通信的最佳方式 service-a ?据我了解,这曾经是 links 的工作,但是 networks现在是首选。我已经试过用 network_mode 运行主机,但遇到问题,因为我使用 Docker for Mac。

我已经看到了很多意见和解决方案,但老实说,我不确定这些方法中哪一种是最好的。我见过的一些解决方案包括:
  • 创建共享 network用于我所有的服务,并在他们自己的 docker 组合中单独运行它们
  • 使用 network_mode: 'host'并在我的主机上运行所有内容(遗憾的是我无法使其正常工作)
  • 运行所有其他服务依赖的所有共享服务的单独组合

  • 如果您遇到此问题并有任何建议可以分享,请告诉我,谢谢!

    最佳答案

    每个 docker-compose 为其管理的服务建立自己的网络。正如您所提议的,使用共享桥接网络将是确保单独 docker-compose.yml 中的每个不同服务堆栈能够相互连接的最简单方法。

    You can tell docker-compose to look for and use a pre-existing network .您可以使用 docker network create 创建此网络或者可能在您的服务中将其指定为具有静态名称的自定义网络:a docker-compose.yml:

    服务-a docker-compose.yml

    version: '3'
    services:
    service-a:
    ...

    networks:
    mynetwork:
    driver: bridge

    然后在其他 docker-compose.yml 文件中使用该网络。您需要在 docker-compose.yml 的顶层指定网络,然后您可以告诉每个服务使用它:

    其他一些 docker-compose.yml
    version: '3'
    services:
    web:
    ...
    networks:
    - mynetwork

    networks:
    mynetwork:
    external:
    name: mynetwork

    我只建议第二个选项,因为你说任何其他应用程序都需要 service-a 运行。

    关于docker - 如何在微服务架构中使用 docker-compose 最好地处理共享服务进行本地开发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49777963/

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