python - 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.
我通过谷歌搜索尝试了所有可能的解决方案,但我无法弄清楚。
解决方案
根据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"]
推荐阅读
- php - PHP 和 Mysql 大量添加数据
- javascript - 首次使用 SoundJS 用户,似乎无法播放声音
- jmeter - 如何通过命令行为 Jmeter 中的同一个 JMX 文件提供不同的 csv 文件
- python - 从 np.zeros 中选择具有最高值的行
- python - 使用 SQLAlchemy 生成数据库模式
- javascript - 将嵌套 JSON 数组转换为平面 JSON 数组
- git - TFS git compare 分支显示更改,但文件部分显示没有文件已更改
- algorithm - 从视觉上理解 Boyer-Moore
- excel - 动态复制并粘贴到不同的excel表
- python - 乘法矩阵获取 einsum 的无效数据类型