Dockerized Django REST Framework / Postgresql - 不允许使用主机

时间:2018-05-01 11:51:37

标签: django postgresql docker

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

sudo docker-compose up

我的终端内出现以下错误:

enter image description here

这是我的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': '',
    }
}

2 个答案:

答案 0 :(得分:1)

您的django应用程序正在尝试连接到“localhost”数据库,但由于它位于自己的容器内,因此localhost无法访问数据库。

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

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

请务必仔细阅读django文档。它非常有活力。

答案 1 :(得分:1)

该错误非常自我解释..您没有在ALLOWED_HOSTS setting中设置您的IP。尝试将这些添加到您的设置文件中:

ALLOWED_HOSTS = ['*'] # wildcard, allows all

或者如果你想要明确:

ALLOWED_HOSTS = ['0.0.0.0'] # explicit