我有两个Rails docker容器:
第一个是前端应用程序(container1),另一个是后端API(container2)。
可以在http://0.0.0.0:3000访问前端。前端通过http://0.0.0.0:5000连接到后端API。
我用它来启动将它连接到后端的前端
docker run --name=frontend --publish=3000:3000 --link=postgis:postgres --link=backend:backend --volume=/var/app:/app --tty=false --interactive=false --detach=true frontend
后端正常运行
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cd4521524caf backend "/bin/bash -l -c /setu" About an hour ago Up About an hour 0.0.0.0:5000->5000/tcp backend
我观察到的链接后端在/ etc / hosts
中添加了一个条目172.17.0.712 cd4521524caf
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2 postgres 12b29087618e postgis
如何获取/公开我的后端docker容器的名称和别名以在/ etc / hosts中正确注册,以及如何公开值为172.17.0.12:5000的环境变量。
我注意到我链接的其他docker容器(比如postgis)添加了环境变量但是我的(后端)没有。
我希望我的环境变量像
BACKEND_API="http://172.17.0.12:5000"
/ etc / hosts条目为:
172.17.0.712 backend cd4521524caf backend
答案 0 :(得分:0)
如果您的软件通过/etc/hosts
支持名称解析(除非您在前端手动进行名称解析,否则非常非常可能),您只需使用-e BACKEND_API="http://backend:5000"
即可自动从/etc/hosts
直接提取正确的IP。