【发布时间】:2018-07-26 14:28:31
【问题描述】:
我想从 docker 容器中订阅外部发布/订阅 API。对于订阅,我需要提供 IP 地址、端口和端点,当事件发生时,我的服务可以在这些端点上接收数据。
问题是从容器内部我不知道 docker 主机的 IP 地址,外部 API 必须向其发送数据。
我认为可以通过将主机 IP 作为环境变量传递给容器来解决该问题,但由于该服务必须安装在许多不同的主机上,我不想为每个主机手动设置环境变量。
任何帮助将不胜感激:)
【问题讨论】:
-
请注意,您必须在许多环境中执行相同的操作,我只是将其作为环境变量传入。 (“我的笔记本电脑的 IP 地址是 192.168.1.2,但这不是可路由的 IP 地址。”“我的服务位于负载均衡器后面。”“所有入站流量都需要通过公司防火墙,然后由防火墙重新路由。” )
-
也许一个选项是编写一个 shell 脚本,将 ip 地址放入环境变量并设置 docker compose 内容。这样就不需要手动设置,除了运行脚本。
-
还可以考虑使用Docker Compose env_file: 块来提供环境变量以及 Compose 规范。
-
感谢您输入@DavidMaze。所以我可以编写一个脚本,将主机的 ip 地址放入 docker env_file 中。然后我可以使用这个环境变量为每个主机注册到 API。
标签: docker environment-variables publish-subscribe