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'
}
}
Почему это не работает?