Docker-Compose + postgres: создание базы данных и пользователя не работает (работает без компоновки)
Документы для образа Postgres Docker объясняют, что вы можете заставить образ создавать пользователя и базу данных при создании, используя переменные среды.
Я не могу заставить эту работу использовать docker-compose:
# docker-compose.yml
services:
postgresql:
image: postgres:alpine
environment:
POSTGRES_DB: iotplatform
POSTGRES_USER: iotplatform
POSTGRES_PASSWORD: iotplatform
и вот что я бегу:
docker-compose up -d --force-recreate postgresql
docker-compose exec postgresql psql -U iotplatform
# psql: FATAL: role "iotplatform" does not exist
Когда я бегу docker-compose exec postgresql env
Я вижу переменные среды, как настроено.
В журналах ничего особенного не сказано:
Attaching to iot-container-tracker_postgresql_1
postgresql_1 | 2018-12-17 17:35:05.754 UTC [1] LOG: listening on IPv4 address "0.0.0.0", port 5432
postgresql_1 | 2018-12-17 17:35:05.754 UTC [1] LOG: listening on IPv6 address "::", port 5432
postgresql_1 | 2018-12-17 17:35:05.757 UTC [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
postgresql_1 | 2018-12-17 17:35:05.770 UTC [21] LOG: database system was shut down at 2018-12-17 17:35:03 UTC
postgresql_1 | 2018-12-17 17:35:05.772 UTC [1] LOG: database system is ready to accept connections
postgresql_1 | 2018-12-17 17:35:22.639 UTC [34] FATAL: role "iotplatform" does not exist
РЕДАКТИРОВАТЬ: пробовал без docker-compose и он работает.
docker run --name some-postgres -e POSTGRES_PASSWORD=iotplatform -e POSTGRES_DB=iotplatform -e POSTGRES_USER=iotplatform -d postgres:alpine
docker exec -it some-postgres psql -U iotplatform
iotplatform=#
Что мне не хватает?
1 ответ
После запуска down
а также up
оно работает. По-видимому --force-recreate
не был достаточно сложный сброс.
Спасибо @StéphaneJeandeaux за вашу помощь.