Docker-Compose + postgres: создание базы данных и пользователя не работает (работает без компоновки) - PullRequest
0 голосов
/ 17 декабря 2018

Документы для образа 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 Ответ

0 голосов
/ 18 декабря 2018

После запуска down и up все работает.Очевидно, --force-recreate не был достаточно сложным сбросом.

Спасибо @ StéphaneJeandeaux за вашу помощь.

...