如何将Docker容器的IP动态添加到Django的ALLOWED_HOST

时间:2019-11-15 03:59:29

标签: python django docker docker-container

我计划在Docker中部署Django应用程序。 为了进行主机验证,我们需要将ALLOWED_HOST变量设置为域名或IP地址。

如何将为我的应用程序提供服务的容器的IP地址添加到允许的主机中?

出于安全原因,我不想使用通配符或IP范围。我该怎么办?

3 个答案:

答案 0 :(得分:1)

只需在容器启动过程中包含一个脚本(例如您的CMD或可能的ENTRYPOINT)即可抓取容器ip地址并将其放置在文件中。例如

#!/bin/sh

myaddr=$(ip addr show eth0 | awk '$1 == "inet" {print $2}' | cut -f1 -d/)
sed -i "s/^ALLOWED_HOSTS=.*/ALLOWED_HOSTS=$myaddr/" /path/to/config/file.conf

虽然老实说,我不确定您是否要这样做...通常,您将通过主机上已发布的端口(例如,通过{-p {1}},因此您需要主机ip(或docker run,具体取决于您的使用情况),而不是容器ip。

答案 1 :(得分:0)

我建议使用流行的python软件包random.randint(0, 11)在djsango应用程序的settings.py中动态确定IP地址。

您可以利用以下功能来发挥自己的优势。

netifaces

答案 2 :(得分:0)

我认为最好在您的设置中放入您允许的主机。py:

allowed_hosts = ['0.0.0.0']