我计划在Docker中部署Django应用程序。 为了进行主机验证,我们需要将ALLOWED_HOST变量设置为域名或IP地址。
如何将为我的应用程序提供服务的容器的IP地址添加到允许的主机中?
出于安全原因,我不想使用通配符或IP范围。我该怎么办?
答案 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']