首页 > 解决方案 > Dockerized Django REST Framework / Postgresql - 不允许的主机

问题描述

当我尝试执行以下命令时:

sudo docker-compose up

我在终端内收到以下错误:

在此处输入图像描述

这是我的 docker 文件的样子:

FROM python:3.6

ENV PYTHONUNBUFFERED 1
RUN mkdir /agent-technologies
WORKDIR /agent-technologies
COPY . /agent-technologies 
RUN pip install -r requirements.txt

EXPOSE 8000

这是我的docker-compose.yml样子:

version: '3'

services:
  db:
    image: postgres
    environment:
      - POSTGRES_USER=stefan_radonjic
      - POSTGRES_PASSWORD=cepajecar995
      - POSTGRES_DB=agent_technologies_db
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes: 
      - .:/agent-technologies
    ports: 
      - "8000:8000"
    links:
      - db
    depends_on:
      - db

最后是我之前创建的 PostgresSQL DB 的设置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'agent_technologies_db',
        'USER': 'stefan_radonjic',
        'PASSWORD': 'cepajecar995',
        'HOST': 'db',
        'PORT': '',
    }
}

标签: djangopostgresqldocker

解决方案


您的 django 应用程序正在尝试连接到“localhost”数据库,但由于它位于自己的容器内——localhost 不是访问数据库的正确 uri。

如果您通过 db 容器名称引用,Dockercompose 会将您的名称查询解析为数据库。在您的情况下,它是“db”

当图片上的文本读取时 - 您必须将“0.0.0.0”添加到ALLOWED_HOSTS 设置模块内的变量中。

请确保您已仔细阅读 django 文档。这是相当有活力的。


推荐阅读