首页 > 解决方案 > 使用 Docker 容器-Django 连接到 postgres

问题描述

我花了几个小时,但无法使用 Docker 容器连接到 postgresql。它正在生成以下错误“密码验证失败”,请解释我在哪里下线并帮助我。先感谢您。

Docker-compose.yml

version: "3"
services:
  app:
    build:
      context: .
    ports:
      - "8000:8000"
    volumes:
      - ./app:/app
    command: >
     sh -c "python manage.py runserver 0.0.0.0:8000"
    environment:
    - DB_HOST=db
    - DB_NAME=app
    - DB_USER=postgres
    - DB_PASS=supersecretpassword
    depends_on:
    - db

  db:
    image: postgres:13-alpine
    environment:
    - POSTGRES_DB=app
    - POSTGRES_USER=app
    - POSTGRES_PASSWORD=supersecretpassword

Dockerfile:

FROM python:3.8-alpine
MAINTAINER Leo Developers Ltd

ENV PYTHONUNBUFFERED 1

COPY ./requirements.txt /requirements.txt
RUN apk add --update --no-cache postgresql-client
RUN apk add --update --no-cache --virtual .tmp-build-deps \
      gcc libc-dev linux-headers postgresql-dev
RUN pip install -r /requirements.txt
RUN apk del .tmp-build-deps

RUN mkdir /app
WORKDIR /app
COPY ./app /app

RUN adduser -D user
USER user

settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'HOST': os.environ.get('DB_HOST'),
        'NAME': os.environ.get('DB_NAME'),
        'USER': os.environ.get('DB_USER'),
        'PASSWORD': os.environ.get('DB_PASS'),
    }
}

错误:

$ docker-compose up    
db_1   | 2020-08-16 16:48:26.478 UTC [27] FATAL:  password authentication failed for user "postgres"
db_1   | 2020-08-16 16:48:26.478 UTC [27] DETAIL:  Role "postgres" does not exist.
db_1   | Connection matched pg_hba.conf line 99: "host all all all md5"
app_1  | psycopg2.OperationalError: FATAL:  password authentication failed for user "postgres"
    app_1  | django.db.utils.OperationalError: FATAL:  password authentication failed for user "postgres".

标签: python-3.xpostgresqldjango-rest-frameworkdocker-compose

解决方案


推荐阅读