跟上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'这个词。
。那么有两个问题:
- 是否有可能提取/解引用/解码'后端'容器的网络身份?
- 如果可能的话,在启动"前端"容器时如何做到这一点?
如果我的方法是错误的,有更好的方法来解决这个问题,请让我知道。这个解看起来很简单,但我就是想不出来。如有任何帮助,不胜感激。
感谢您的时间和关注。
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,但现在这是一个修复。
留下这篇文章,希望能对别人有所帮助。