从我的django app容器

时间:2017-05-15 05:01:48

标签: django nginx docker

我们的网络应用程序中有一项功能,我们需要发送服务器的IP,但我始终发送172.17.0.2,因为这是request.META['REMOTE_ADDR']的值,通常为127.0.0.1时在localhost中使用django,我假设是我们的NGINX容器的TCP地址,请求来自哪里。 如何发送我的泊坞主机的IP?

容器:

  • Nginx的
  • Django with gunicorn
  • 的PostgreSQL
  • Redis的

2 个答案:

答案 0 :(得分:2)

在创建容器时将其作为环境变量传递给容器。然后,在Django代码中读取该环境变量。

您可以使用-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 }')

答案 1 :(得分:1)

试试这个:

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