首页 > 解决方案 > Django 通过 Docker 错误:无法分配该 IP 地址

问题描述

我正在使用 Ubuntu 16.04 VM 并尝试通过 Docker 容器运行我的 Django 应用程序。

我成功验证了我的网络正在运行。如果我只是在我的机器上发出命令,它就会运行。但是,当我使用我的应用程序构建映像并运行容器时,它不起作用。我的 Dockerfile 最后有这个 CMD。

CMD ["python", "manage.py", "runserver", "my_VM_IP:8000]"

它给了我一个错误

Performing system checks...

System check identified no issues (0 silenced).
June 21, 2018 - 20:50:44
Django version 1.11.13, using settings 'datahttptools.settings'
Starting development server at http://myVMip:8000/
Quit the server with CONTROL-C.
Error: That IP address can't be assigned to.

我通过谷歌搜索尝试了所有可能的解决方案,但我无法弄清楚。

标签: pythondjangodockerserverip

解决方案


根据https://docs.djangoproject.com/en/2.0/ref/django-admin/#runserver上的 Django 文档,地址默认为 127.0.0.1(环回设备),只能在机器本身上访问。在这种情况下,Django 服务器只能在容器本身中访问。我猜您需要可以从您的正常主机系统访问的服务,因此您应该将命令更改为:

CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

这会将服务器绑定到端口 8000 上使用 IPv4 的所有网络接口。为了绑定以提供 IPv6,它必须是:

CMD ["python", "manage.py", "runserver", "[::]:8000"]

推荐阅读