将我的自定义 docker 容器链接到另一个自定义容器

Linking my custom docker container to another custom container

我有两个 Rails docker 个容器:

第一个是前端应用程序 (container1),另一个是后端 API (container2)。

可以在 http://0.0.0.0:3000. The front-end connects to the backend API via http://0.0.0.0:5000 访问前端。

我已经用它来启动前端并将其链接到后端

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

如何 get/expose 我的后端 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

如果您的软件支持通过 /etc/hosts 进行名称解析(除非您在前端手动进行名称解析,否则很有可能),您可以只使用 -e BACKEND_API="http://backend:5000",它会直接从 /etc/hosts 自动提取正确的 IP。