Dockerising Elixir / Phoenix app: (Postgrex.Error) FATAL 28P01 (invalid_password) аутентификация пароля не удалась для пользователя "postgres" - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть приложение Elixir / Phoenix, над которым я работаю локально, подкрепленное PostgreSQL. Все работает нормально, когда я запускаю через Termainal с mix phx.server.

Я сейчас пытаюсь докеризировать приложение, чтобы я мог развернуть на AWS. Я следую за Развертыванием с Docker документацией с использованием Distillery.

Я скопировал все настройки с этой страницы, так что не стесняйтесь просматривать эти конфигурации, пока я используя те же самые.

Когда я пытаюсь запустить docker-compose up, я получаю следующую ошибку:

...

db_1   |    Connection matched pg_hba.conf line 95: "host all all all md5"
web_1  | 12:05:31.631 [error] Postgrex.Protocol (#PID<0.1879.0>) failed to connect: ** (Postgrex.Error) FATAL 28P01 (invalid_password) password authentication failed for user "postgres"
db_1   | 2020-04-14 12:05:32.093 UTC [54] FATAL:  password authentication failed for user "postgres"
db_1   | 2020-04-14 12:05:32.093 UTC [54] DETAIL:  Password does not match for user "postgres".
db_1   |    Connection matched pg_hba.conf line 95: "host all all all md5"
web_1  | 12:05:32.094 [error] Postgrex.Protocol (#PID<0.1877.0>) failed to connect: ** (Postgrex.Error) FATAL 28P01 (invalid_password) password authentication failed for user "postgres"
db_1   | 2020-04-14 12:05:32.295 UTC [55] FATAL:  password authentication failed for user "postgres"
db_1   | 2020-04-14 12:05:32.295 UTC [55] DETAIL:  Password does not match for user "postgres".
db_1   |    Connection matched pg_hba.conf line 95: "host all all all md5"
web_1  | 12:05:32.296 [error] Postgrex.Protocol (#PID<0.1870.0>) failed to connect: ** (Postgrex.Error) FATAL 28P01 (invalid_password) password authentication failed for user "postgres"
db_1   | 2020-04-14 12:05:32.640 UTC [56] FATAL:  password authentication failed for user "postgres"
db_1   | 2020-04-14 12:05:32.640 UTC [56] DETAIL:  Password does not match for user "postgres".
db_1   |    Connection matched pg_hba.conf line 95: "host all all all md5"
web_1  | 12:05:32.641 [error] Postgrex.Protocol (#PID<0.1880.0>) failed to connect: ** (Postgrex.Error) FATAL 28P01 (invalid_password) password authentication failed for user "postgres"
db_1   | 2020-04-14 12:05:33.150 UTC [57] FATAL:  password authentication failed for user "postgres"
db_1   | 2020-04-14 12:05:33.150 UTC [57] DETAIL:  Password does not match for user "postgres".
db_1   |    Connection matched pg_hba.conf line 95: "host all all all md5"
web_1  | 12:05:33.151 [error] Postgrex.Protocol (#PID<0.1875.0>) failed to connect: ** (Postgrex.Error) FATAL 28P01 (invalid_password) password authentication failed for user "postgres"
...

Вероятно, это довольно простая проблема, которую нужно решить, но я не сделал большую базу данных админ. Я думаю, мне нужно что-то изменить в файле config/docker.env (по ссылке выше).

Если я не ошибаюсь, пароль по умолчанию для пользователя postgres пуст. Но я не уверен, как установить пустой пароль, используя этот файл docker.env. В идеале, я хотел бы установить имя пользователя и пароль самостоятельно где-нибудь во время сборки docker, чтобы я знал, какой пользователь был создан и т.д. c (при условии, что это мудрое решение).

Любой советы будут оценены.

1 Ответ

0 голосов
/ 14 апреля 2020

Ссылка, которую вы разместили, использует стандартное Postgres Docker Изображение .

Вы можете расширить / настроить это изображение, установив Переменные среды .

Наиболее заметно:

  • POSTGRES_PASSWORD
  • POSTGRES_USER
  • POSTGRES_DB

Отправленный вами config/docker.env также использует переменные среды - но только для настройки приложения - а не изображение Postgres. Эта установка молча принимает значения по умолчанию от postgres:10-alpine.

. Вы можете добавить env vars, Postgres Изображение понимает и использовать существующую конфигурацию приложения.

Для того, чтобы просто заставить его работать с самостоятельно выбранным именем пользователя и паролем. Этого должно быть достаточно:

config/docker.env

# ...
DATABASE_USER=dbsuperuser
DATABASE_PASS=dbsuperuserpassword
POSTGRES_PASSWORD=dbsuperuserpassword
POSTGRES_USER=dbsuperuser
# ...

Предупреждение : пользователь и пароль, настроенные с помощью переменных среды, имеют значение Superuser . Это не должен быть пользователь, к которому приложение подключается к базе данных - событие, хотя это руководство способствует этому.

...