docker desktop使用容器网络别名作为另一个容器的环境变量



跟上Docker的速度,我试图将一个容器的网络标识(ip +端口)作为环境变量传递给另一个容器。我正在使用Docker桌面,并在自己的终端会话中运行每个容器,使用已经创建的Docker网络。

例如:ServerContainer:

  • 有一个网络别名'backend'
  • 暴露端口5000
  • 在浏览器中显示为'http://localhost:5000'

AppContainer:

  • 有一个网络别名'frontend'
  • 需要ServerContainer的网络标识作为环境变量

对于AppContainer ('frontend')当我运行

docker run -dp 3000:3000 --network <network name> --network-alias frontend -e THE_SERVER_CONTAINER_IDENTITY=http://localhost:5000 <image for frontend>

一切正常。

然而,这似乎不是个好主意。更好的方法是使用ServerContainer('后端')网络标识作为环境变量,例如:

docker run -dp 3000:3000 --network <network name> --network-alias frontend -e THE_SERVER_CONTAINER_IDENTITY=backend <image for frontend>

但是,'backend'显示为env变量值。需要的是来自ServerContainer ('backend')的网络标识,而不是'backend'这个词。

。那么有两个问题:

  1. 是否有可能提取/解引用/解码'后端'容器的网络身份?
  2. 如果可能的话,在启动"前端"容器时如何做到这一点?

如果我的方法是错误的,有更好的方法来解决这个问题,请让我知道。这个解看起来很简单,但我就是想不出来。如有任何帮助,不胜感激。

感谢您的时间和关注。

change 'localhost' in:

THE_SERVER_CONTAINER_IDENTITY=http://localhost:5000

to '0.0.0.0' ie:

THE_SERVER_CONTAINER_IDENTITY=http://0.0.0.0:5000

似乎有效。

不确定这是否是最好的解决方案。我更喜欢直接引用"后端"ip,但现在这是一个修复。

留下这篇文章,希望能对别人有所帮助。

最新更新