Не создается база данных Postgresql в Docker
Есть docker-compose.yaml файл:
version: '3.7'
services:
app:
build: .
container_name: backend
environment:
DB_USER: filmass
DB_HOST: pg_db
DB_PASSWORD: 316497258
DB_NAME: film_assistant
ports:
- "8008:8000"
command: bash -c "uvicorn app.main:app --host 0.0.0.0"
restart: always
pg_db:
image: postgres:13
ports:
- 5432:5432
volumes:
- ./data:/var/lib/postgresql/data/
environment:
POSTGRES_USER: filmass
POSTGRES_DB: film_assistant
POSTGRES_PASSWORD: 316497258
restart: always
Проблема в том, что, когда backend пытается присоединиться к Бд film_assistant получает ошибку, о том что такой бд нет.
sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) FATAL: database "film_assistant" does not exist
Что выдает БД в docker
pg_db_1 | 2022-03-15 14:26:07.732 UTC [26] LOG: invalid record length at 0/15CA600: wanted 24, got 0
pg_db_1 | 2022-03-15 14:26:07.732 UTC [26] LOG: redo done at 0/15CA588
pg_db_1 | 2022-03-15 14:26:07.906 UTC [1] LOG: database system is ready to accept connections
pg_db_1 | 2022-03-15 14:26:08.649 UTC [35] FATAL: database "film_assistant" does not exist
Посмотрев ошибку в интернете, понял, что у меня во 1 не создается volume(может связано с этим) Также ошибка сообщает что как раз volume создан неверно или container. Попробовав решения, которые были в аналогичных вопросах, понял что ничего не получилось. там советовали удалить container, image, volume и создать заново, несколько раз попробовал ничего не вышло. Но что самое странное еще вчера все работало, то есть и база была создана и подключался и я в ней спокойно работал. Но ошибочно удалил папку data, которая создается при запуске docker, я запустил скрипт еще раз, настроил pg_hba.conf также как и до этого, понял что теперь все не работает. И не знаю как даже это починить.
Ответы (1 шт):
Так как и выше написали в комментариях я явно объявил volumes. и соответственно в pg_db в volumes изменил путь. вот итоговый docker-compose.yaml
version: '3.7'
services:
app:
build: .
container_name: backend
environment:
DB_USER: filmass
DB_HOST: pg_db
DB_PASSWORD: 316497258
DB_NAME: film_assistant
ports:
- "8008:8000"
command: bash -c "uvicorn app.main:app --host 0.0.0.0"
restart: always
pg_db:
image: postgres:13
ports:
- 5432:5432
volumes:
- data:/var/lib/postgresql/data
environment:
POSTGRES_USER: filmass
POSTGRES_DB: film_assistant
POSTGRES_PASSWORD: 316497258
restart: always
volumes:
data:
