Docker- django在连接到postgres时抛出错误:psycopg2.OperationalError:无法连接到服务器:连接被拒绝

时间:2019-09-24 06:06:08

标签: python django postgresql docker

我正在尝试对我的Django-postgres应用进行docker化。 我的Dockerfile是:

FROM python:3

ENV PYTHONUNBUFFERED 1

RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/

我的docker-compose.yml是:

version: '3'

services:
  web:
    build: .
    command: python app/manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db
  db:
    image: postgres
    ports:
      - "5432:5432"
    environment:
      POSTGRES_PASSWORD: password

和我的设置.py具有以下数据库代码:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'postgres',
        'USER': 'postgres',
        'PASSWORD': 'password',
        'HOST': '0.0.0.0',
        'PORT': '5432',
    }
}

我的数据库和Web容器已启动,但运行时: docker-compose运行网络python manage.py migration 我收到错误消息:

  

psycopg2.OperationalError:无法连接到服务器:连接被拒绝           服务器是否在主机“ 0.0.0.0”上运行并接受           端口5432上的TCP / IP连接?

如何使我的容器进行交流?

1 个答案:

答案 0 :(得分:3)

HOST更改为:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'postgres',
        'USER': 'postgres',
        'PASSWORD': 'password',
        'HOST': 'db',
        'PORT': '5432',
    }
}

0.0.0.0不是有效的IP,此外,您还需要使用service名称进行连接,因为compose会为您解决该问题