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',
}
}