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