【发布时间】:2018-09-21 12:13:39
【问题描述】:
尝试建立一种有效的模式,允许我的所有服务之间进行通信,并允许同时在多个服务上进行本地开发。我目前正在使用 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 composes 中单独运行它们 - 使用
network_mode: 'host'并在我的主机上运行所有内容(遗憾的是我无法正常工作) - 运行我所有其他服务所依赖的所有共享服务的单独组合
如果您遇到此问题并有任何建议可以分享,请告诉我,谢谢!
【问题讨论】:
-
你是如何在你的 docker-compose.yml 中配置 service-a 的?你能提供这些细节吗?
-
我没有提供该配置,因为此时我没有尝试设置任何具体内容。在
how上寻找想法以最好地解决这个问题。我只是包含了 docker-compose 的 sn-p 来说明依赖关系。 -
好的,那么当您说
I originally tried to just have service-a running from this app's docker-compose, but I ran another application simultaneously and couldn't communicate with service-a from that application.时,您是在尝试在另一个 docker-compose 中运行另一个应用程序? -
刚刚更新了我的帖子并将其删除。感谢您指出了这一点。未能清楚地表达我的观点,即我开始尝试将其作为一种方法,但感觉不对。由于默认情况下,每个 compose 都会创建一个单独的网络(据我了解,或者从技术上讲,它是一个
bridge网络),这让我认为使用共享的network可能是正确的方法。
标签: docker docker-compose microservices