【发布时间】:2020-12-09 04:47:50
【问题描述】:
长话短说,我创建了一个 django 项目,并使用了 django for professional book 2.2 作为参考(在模型中添加了更多字段)。但是,一旦我到达安全章节并尝试在终端中运行 docker 命令,就会出现编程错误。
在研究并尝试调试后,我决定从项目中删除所有迁移,从 docker 容器中删除卷,并删除/注释掉某些文件/代码。
从这里,我重新运行了所有迁移,现在当我检查我的终端时,我仍然得到 21 个未应用的迁移和“在http://0.0.0.0:8000/" 启动开发服务器。当我点击链接时,我得到“不允许的主机在 / ...无效的 HTTP_HOST 标头:..."
我只是想知道出了什么问题,因为在我看来,我的 docker-compose.yml 和 settings.py 似乎导致了这个错误。我正在尝试让我的终端获取“https://127.0.0.1:8000/”的链接。
settings.py:我使用的是 postgres 数据库
DEBUG = int(os.environ.get('DEBUG', default=0))
ALLOWED_HOSTS = []
docker-compose.yml:我遗漏了密钥
version: '3.8'
services:
web:
build: .
command: python /code/manage.py runserver 0.0.0.0:8000
environment:
- DEBUG=1
- ENVIRONMENT=development
volumes:
- .:/code
ports:
- 8000:8000
depends_on:
- db
db:
image: postgres:12.3
volumes:
- postgres_data:/var/lib/postgresql/data/
volumes:
postgres_data:
旁注:在删除编程错误和删除迁移之前,即使我的 docker-compose.yml 中有 0.0.0.0:8000,我也能够让 127.0.0.1:8000 工作。
非常感谢任何帮助。
【问题讨论】:
-
尝试将其添加到允许的主机,例如 , ALLOWED_HOSTS = ['localhost', '0.0.0.0']
-
“我能够让 127.0.0.1:8000 工作,即使我的 docker-compose.yml 中有 0.0.0.0:8000。” - 那就是不奇怪。 0.0.0.0 表示监听所有可用的 IP 地址。 127.0.0.1 就是其中之一……除非您的网络有严重的压力。
-
@StephenC,感谢您的回复。我假设我的网络有些奇怪。
-
如果您认为问题出在您的网络上,那么这里是一个错误的问题。试试serverfault.com 或者unix.stackexchange.com
-
@tahamaatof,我尝试了以下允许的主机,但不幸的是,它不起作用。
标签: python python-3.x django docker