【问题标题】:Docker Django Error: CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is FalseDocker Django 错误:CommandError:如果 DEBUG 为 False,则必须设置 settings.ALLOWED_HOSTS
【发布时间】:2021-07-30 18:07:25
【问题描述】:

我一直在尝试使用 postgresql 对我的 django 项目进行 dockerise,但一次又一次地遇到同样的问题。

web_1  | CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False.

我将 .env 中的环境变量设置为:

.env:

DEBUG = True
ALLOWED_HOSTS=localhost 127.0.0.1 0.0.0.0:8000

并使用 python-decouple 模块在 settings.py 中配置它们

from decouple import config
DEBUG = config('DEBUG', default=False)
ALLOWED_HOSTS = config('ALLOWED_HOSTS').split(sep=' ')

运行项目:

python manage.py runserver 

工作正常,没有错误。但是,在跑步方面:

docker-compose up

我得到以下输出

Starting postgres_db ... done
Starting project_web_1 ... done
Attaching to postgres_db, project_web_1
postgres_db |
postgres_db | PostgreSQL Database directory appears to contain a database; Skipping initialization
postgres_db |
postgres_db | 2021-07-30 17:58:52.695 UTC [1] LOG:  starting PostgreSQL 13.3 (Debian 13.3-1.pgdg100+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit
postgres_db | 2021-07-30 17:58:52.696 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
postgres_db | 2021-07-30 17:58:52.696 UTC [1] LOG:  listening on IPv6 address "::", port 5432
postgres_db | 2021-07-30 17:58:52.747 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
postgres_db | 2021-07-30 17:58:52.887 UTC [27] LOG:  database system was shut down at 2021-07-30 17:58:34 UTC
postgres_db | 2021-07-30 17:58:52.950 UTC [1] LOG:  database system is ready to accept connections
web_1  | CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False.
project_web_1 exited with code 1

我已尝试设置 ALLOWED_HOSTS=['*'] 并且也包含其他主机,但我找不到任何有效的方法。

Dockerfile

FROM python:3.9

COPY . /usr/src/app
WORKDIR /usr/src/app
RUN pip install -r requirements.txt
CMD ["python3", "manage.py", "runserver", "0.0.0.0:8000"]

docker-compose.yml

version: "3.8"
services:
  web:
    build: .
    volumes: 
      - .:/django
    ports:
      - "8000:8000"
    depends_on: 
      - db
  
  db:
    image: postgres
    volumes:
      - ./data/db:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
    container_name: postgres_db

【问题讨论】:

  • 试试ALLOWED_HOSTS='localhost 127.0.0.1 0.0.0.0:8000'。将引号放在 .env 中并尝试。
  • 如果在settings.py中定义后打印(ALLOWED_HOSTS),输出是什么?
  • ALLOWED_HOSTS=['*'] 有什么问题?如果您使用 compose 运行,则根据您的 compose 文件,您的主机名应该是 'web'。所以试试ALLOWED_HOSTS = ['web'],但是通配符应该可以工作。
  • 另一方面,我不会让Dockerfile 运行runserver。如果您真的想使用runserver,请让撰写文件执行此操作; docs.docker.com/samples/django
  • @ShivendraPratapKushwaha 不幸的是,我仍然遇到同样的错误

标签: python django docker docker-compose


【解决方案1】:

所以我没有找到明显的问题解决方案,因此,看到没有什么是逻辑上不正确,我决定再次启动整个项目(从 docker 容器开始)并复制 django 文件我需要的。它现在就像一个魅力。

我感谢那些花时间回答的人。 按照上面的@markwalker_ 建议关注https://docs.docker.com/samples/django/

【讨论】:

    猜你喜欢
    • 2014-09-11
    • 1970-01-01
    • 2021-07-03
    • 2012-07-15
    • 2012-06-09
    • 2018-10-23
    • 2021-08-29
    • 2013-02-14
    • 2017-01-20
    相关资源
    最近更新 更多