Docker-Compose Postgresql Init Entrypoint

Я пытаюсь создать Dockerfile, который будет использовать файл init.sql для заполнения базы данных. Однако это не работает, и из других ответов на этом сайте и в других местах я не вижу решения. Это просто, так что это должно быть что-то глупое. Бэкэнд написан на Python/Django.

Вот Dockerfile -

version: "3.9"

services:
  db:
    restart: always
    image: postgres
    volumes:
      - ./init.sql:/docker-entrypoint-initdb.d
      - ./data/db:/var/lib/postgresql/data
    environment:
      - POSTGRES_NAME=dev-postgres
      - POSTGRES_USER=pixel
      - POSTGRES_PASSWORD=stardust
  web:
    build: .
    restart: always
    command: sh -c "./waitfor.sh db:5432 -- python3 manage.py runserver"
    volumes:
      - .:/code
    ports:
      - "8001:8001"
    environment:
      - POSTGRES_NAME=dev-postgres
      - POSTGRES_USER=pixel
      - POSTGRES_PASSWORD=stardust
    depends_on:
      - db

А вот файл init.sql в каталоге docker-entrypoint-initdb.d:

CREATE DATABASE lightchan;

Одна таблица, чтобы сделать это как можно проще.

Вот вывод sudo docker-compose build && docker-compose up:

Ошибка tl;dr такова:

django.db.utils.OperationalError: connection to server at "db" (172.23.0.2), port 5432 failed: FATAL:  database "lightchan" does not exist

Вот соединение с базой данных в settings.py:

DATABASES = {
   'default': {
       'ENGINE': 'django.db.backends.postgresql',
       'NAME': 'lightchan',
       'USER': 'pixel',
       'PASSWORD': 'stardust',
       'HOST': 'db',
       'PORT': '5432'
   }
}

Почему это не работает?

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