【发布时间】:2020-01-27 08:48:36
【问题描述】:
我们的应用程序在 traefik 反向代理之后。我们管理许多子域,并使用 traefik 的监视文件功能来动态设置新的子域以进行代理。 所以我们的应用程序会生成一个 traefik .yaml 动态配置文件。
同一个 traefik 将管理同一个应用程序的许多实例。
为此,我们需要向 traefik 指明如何在其自己的网络中访问我们的应用程序。 我们知道我们可以使用简单的主机名,即容器名称。 但这仅适用于应用实例的默认 docker-compose 网络,而不是与 traefik 共享的外部网络。
这个需要长主机名版本,所以我们确信它可以到达正确的应用程序实例。
(<compose_name>_<container_name>_1 或取决于 docker-compose 版本 (<compose_name>_<container_name>_1_<hash>)
您知道一种方法可以在同一 docker-compose 默认网络的另一个容器中获取 docker-compose 容器的主机名的长版本吗?
为了更好的上下文,这里有一个简单的 docker-compose.yaml 文件
version: "3"
services:
app:
image: app_image
networks:
- app_network
restart: unless-stopped
nginx:
image: nginx
links:
- app
networks:
- app_network
- traefik_traefik
restart: unless-stopped
networks:
traefik_traefik:
external: true
app_network:
driver: bridge
我们希望从 app 容器中获取 nginx 长主机名版本,以便我们可以使用它来生成 traefik 的动态配置。
感谢您的帮助。
【问题讨论】: