Docker compose 如何在容器中获取docker容器的长主机名?
我们的应用程序支持traefik反向代理。我们管理许多子域,并使用traefik的监视文件功能动态设置要代理的新子域。 因此,我们的应用程序生成一个traefik.yaml动态配置文件 同一traefik将管理同一应用程序的多个实例 为此,我们需要向traefik说明如何在其自己的网络中访问我们的应用程序。 我们知道我们可以使用简单的主机名,即容器名。 但这只在应用程序实例的默认docker compose网络中起作用,而不在与traefik共享的外部网络中起作用 这一个需要长主机名版本,因此我们确保它到达正确的应用程序实例。 (Docker compose 如何在容器中获取docker容器的长主机名?,docker-compose,traefik,Docker Compose,Traefik,我们的应用程序支持traefik反向代理。我们管理许多子域,并使用traefik的监视文件功能动态设置要代理的新子域。 因此,我们的应用程序生成一个traefik.yaml动态配置文件 同一traefik将管理同一应用程序的多个实例 为此,我们需要向traefik说明如何在其自己的网络中访问我们的应用程序。 我们知道我们可以使用简单的主机名,即容器名。 但这只在应用程序实例的默认docker compose网络中起作用,而不在与traefik共享的外部网络中起作用 这一个需要长主机名版本,因此我
\uuu 1
或取决于docker编写版本(\uu 1
)
您知道在同一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的动态配置
感谢您的帮助。我们认为已经找到了一个解决方案。查询短名称主机名的FQDN可以得到所需的长主机名
dig +short -x `dig +short nginx`
返回composename\u app\u 1.composename.app\u网络。
在我们的python应用程序中,我们可以使用
import socket
socket.getfqdn('nginx')