从我的django应用程序容器获取主机IP

我们的networking应用程序有一个function,我们需要发送我们的服务器的IP,但我总是发送172.17.0.2因为这是request.META['REMOTE_ADDR']这通常是127.0.0.1在localhost中使用django的值并且我认为是我们的NGINX容器的TCP地址,其中请求来自于此。 我将如何发送我的docker主机的IP呢?

集装箱:

  • Nginx的
  • Django与gunicorn
  • PostgreSQL的
  • Redis的

在创build时将其作为环境variables传递给您的容器。 然后,在你的Django代码中读取这个环境variables。

您可以在-e HOST_IP=$(/sbin/ip route | awk '/default/ { print $3 }') docker run命令中使用选项-e HOST_IP=$(/sbin/ip route | awk '/default/ { print $3 }')docker run

docker-compose.yml ,你可以做这样的事情。

 django: environment: - HOST_IP=$(/sbin/ip route | awk '/default/ { print $3 }') 

尝试这个:

 import subprocess host = subprocess.check_output(['bash', '-c', "/sbin/ip route|awk '/default/ { print $3 }'"]).decode('utf-8').strip()