Dockerizing django postgres application getting password authentication failed for user "root" Role "root" does not exist

Здравствуйте, я докеризирую мое приложение django postgres, при этом я указываю пользователя как admin, но все равно я подключаюсь к базе данных postgres как root и получаю ошибки.

DockerFile

FROM ubuntu:20.04

RUN apt update && apt install python3-pip  python3-dev -y

ENV PYTHONUNBUFFERED 1
ENV PYTHONDONTWRITEBYTECODE 1

WORKDIR /code

COPY requirements.txt /code/

RUN pip3 install --upgrade pip

RUN apt-get install libffi-dev

RUN pip3 install cffi

RUN pip3 install -r requirements.txt 

COPY ./entrypoint.sh .
RUN sed -i 's/\r$//g' /code/entrypoint.sh
RUN chmod +x /code/entrypoint.sh

COPY . /code
RUN python3 manage.py collectstatic --no-input
ENTRYPOINT ["/code/entrypoint.sh"]

entrypoint.sh

#!/bin/sh

if [ "$DATABASE" = "postgres" ]
then
    echo "Waiting for postgres..."

    while ! nc -z $SQL_HOST $SQL_PORT; do
      sleep 0.1
    done

    echo "PostgreSQL started"
fi

exec "$@"

docker-compose.yml

version: "3.3"
   
services: 
  db_new:
    image: postgres:12.0-alpine
    container_name: db_new
    ports:
      - 5432:5432
    volumes:
      - postgres_data:/var/lib/postgresql/data/
    environment:
      - POSTGRES_USER=admin
      - POSTGRES_PASSWORD=admin
      - POSTGRES_DB=docker2
       



  redis:
    image: "redis:alpine"
  
  web:
    restart: always
    container_name: web
    build:
      context: .
      dockerfile: Dockerfile
    command: bash -c "/usr/local/bin/daphne -b 0.0.0.0 -p 8000 setup.asgi:application"
    volumes:
      - static_volume:/code/static/
      - media_volume:/code/media/
    ports:
      - "8000:8000"
    env_file:
      - ./.env
    depends_on:
      - db_new
      - redis

  celery:
    build: .
    command: /usr/local/bin/celery -A setup worker -l info
    depends_on:
      - db_new
      - redis

  celery-beat:
    build: .
    command: /usr/local/bin/celery -A setup beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler
    depends_on:
      - db_new
      - redis

  nginx:
    build: ./nginx
    volumes:
      - static_volume:/code/static/
      - media_volume:/code/media/
    ports:
      - 80:80
    depends_on:
      - web

volumes:
  postgres_data:
  static_volume:
  media_volume:

Ошибка:

2021-12-17 10:49:19.602 UTC [27] FATAL:  password authentication failed for user "root"
db_new         | 2021-12-17 10:49:19.602 UTC [27] DETAIL:  Role "root" does not exist.
db_new         |        Connection matched pg_hba.conf line 95: "host all all all md5"

Ребята, пожалуйста, помогите мне в этом. Спасибо за помощь.

Когда я указываю пользователя как admin, почему он подключается как пользователь root .Что я упускаю в этом вопросе.

Можете ли вы показать нам ваш .env файл и файл настроек django? У вас должно быть что-то вроде этого в файле настроек django:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'docker2',
        'USER': 'admin',
        'PASSWORD': 'admin',
        'HOST': 'db_new',
        'PORT': '5432',
    }
}
Вернуться на верх