@robocop45

Как исправить ошибку при сборке докера:: database "db" does not exist?

Всем привет, собираю докер: приложение + postgres + redis и вот такая ошибка

asyncpg.exceptions.InvalidCatalogNameError: database "db" does not exist


env
DATABASE_URL=postgresql+asyncpg://postgres:password@db:5432/db


dokcer-compose

version: '3.11'


services:


  redis:
    image: redis:alpine
    env_file:
      - ./.env
    restart: on-failure
    ports:
      - "6379:6379"
  db:
    image: postgres:15-alpine
    env_file:
      - ./.env
    volumes:
      - pgdata:/var/lib/postgresql/data
    environment:
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-password}

    restart: on-failure
    ports:
      - "5432:5432"

  bot:
    build:
      context: .
      dockerfile: Dockerfile
    command:
       sh -c "alembic upgrade head && python main.py"
    env_file:
      - ./.env
    restart: always
    depends_on:
      - db
      - redis


volumes:
  pgdata:


Dockerfile

FROM python:3.11
WORKDIR /app

RUN apt-get update \
    && apt-get install -y gcc libffi-dev libssl-dev \
    && rm -rf /var/lib/apt/lists/*

COPY requirements.txt .

RUN pip3 install --upgrade pip &&  pip3 install -r requirements.txt --no-cache-dir

COPY . .


ввожу команду docker-compose up --build и получаю ошибку, что нет такой бд. Честно, не знаю как это исправить, я даже кэш сбрасывал с помощью docker system prune -a

Заранее спасибо
  • Вопрос задан
  • 480 просмотров
Пригласить эксперта
Ответы на вопрос 1
AshBlade
@AshBlade
Просто хочу быть счастливым
Потому что базы данных db не существует. По умолчанию создается бд postgres.
Тут 3 решения:
- Создать БД db при старте приложения
- Использовать скрипт инициализации - все *.sql файлы внутри директории /docker-entrypoint-initdb.d/ выполняются при инициализации БД
- Указывать название БД по умолчанию через переменную окружения POSTGRES_DB: 'db'
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы