从我的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()