"База данных 'docker-db' не существует".

Итак, у меня проблема с созданием приложения django/postgre с помощью docker. Оно продолжает говорить "база данных не существует" и довольно много времени гугления не приносит никаких результатов. Я уже удалял тома и пересобирал свое приложение несколько раз, следовал различным руководствам о том, как люди делают postgres, но все еще не повезло заставить его работать для меня. Dockerfile

FROM python:3.9.6-alpine
WORKDIR /blog-master

# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

# install psycopg2 dependencies
RUN apk update \
    && apk add postgresql-dev gcc python3-dev musl-dev

RUN pip install --upgrade pip
RUN apk update \
    && apk add postgresql-dev gcc python3-dev musl-dev
    
COPY requirements.txt .
RUN pip install -r requirements.txt

COPY . .


compose.yml

services:
  back:
    image: python:3.9
    build: ./blog-master
    command:  sh -c "python manage.py runserver 0.0.0.0:8000 &&
              /usr/local/bin/gunicorn blog.wsgi:application -w 2 -b :8000"
    expose:
      - "8000"
    volumes:
      - blog-master-django:/usr/src/app
      - blog-master-static:/usr/src/app/static
    env_file: .env
    depends_on:
      db:
        condition: service_healthy
  
  db:
    image: postgres:14
    restart: always
    expose:
      - "5432"
    environment:
      - POSTGRES_DB=docker_dev
      - POSTGRES_USER=docker
      - POSTGRES_PASSWORD=docker
    ports:
      - "5432:5432"
    volumes:
      - pgdata:/var/lib/postgresql/data/
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U docker"]
      interval: 5s
      timeout: 5s
      retries: 5

volumes:
  blog-master-django:
  blog-master-static:
  pgdata:

.env

DEBUG=1
SECRET_KEY='**key-here**'
DJANGO_ALLOWED_HOSTS=localhost 127.0.0.1 [::1]
SQL_ENGINE=django.db.backends.postgresql
SQL_DATABASE=docker_db
SQL_USER=docker
SQL_PASSWORD=docker
SQL_HOST=db
SQL_PORT=5432

Итак, ответ был довольно прост и довольно "я не знаю, что это было". Во-первых, я забыл добавить DATABASE=postgres в мой .env файл, что было очень важно для того, чтобы Django заметил нужный db. Проблема с поиском db для не запрашиваемой db? Я просто переименовал нужный db в "docker", который искал мой db сервис, и все заработало.

Вернуться на верх