Docker-Compose Init Postgres Failing
Я пытался заставить работать файл docker-compose, и до сих пор он был все ближе и ближе, но не совсем там. Возможно, заданные вопросы будут полезны кому-то еще в будущем. В любом случае, предыдущая тема была здесь:
Docker-Compose Postgresql Init Entrypoint
Из чего я узнал,
- between runs a docker-compose file should have
docker compose volumes --down
and - if the POSTGRES_DATABASE isn't specified, then the POSTGRES_NAME will replicate to the POSTGRES_DATABASE.
- another suggestion from Discord has been to rewrite some of the volume signature to include the file path to
init.sql
as indocker-entrypoint-initdb.d/init.sql
Итак, если я docker-compose down --volume
и затем sudo docker-compose build && docker-compose up
с
version: "3.9"
services:
db:
restart: always
image: postgres
volumes:
# - ./data/db:/var/lib/postgresql/data
- ./init.sql:/docker-entrypoint-initdb.d/init.db
environment:
- POSTGRES_NAME=dev-postgres
- POSTGRES_USER=pixel
- POSTGRES_DATABASE=lightchan
- 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_DATABASE=lightchan
- POSTGRES_PASSWORD=stardust
depends_on:
- db
Затем выводится следующее:
Итак, база данных не видна на веб-странице, но PSQL говорит, что она создана. Если я откомментирую объем данных на PSQL, то получу:
Вновь я использовал docker-compose volumes --down
для очистки ошибок из предыдущего потока, но, очевидно, это может привести либо к неправильному выполнению скрипта waitfor.sh
при включении томов данных, либо к какой-то другой ошибке по какой-то причине.
Есть какие-нибудь идеи? У меня нет вариантов отладки, о которых я знаю.
Попробуйте открыть порты в ваших службах db:
db:
restart: always
image: postgres
ports:
- 5432:5432