docker-compose: FATAL: ошибка аутентификации пароля для пользователя postgres

Мой док-контейнер для postgres:11 в моей настройке docker-compose работает.

Всякий раз, когда я пытаюсь передать POSTGRES_USER/POSTGRES_PASSWORD, чтобы переопределить комбинацию postgres:password по умолчанию, я получаю следующую ошибку:

postgres    | 2020-10-22 01:33:33.759 UTC [72] FATAL:  password authentication failed for user "postgres"
postgres    | 2020-10-22 01:33:33.759 UTC [72] DETAIL:  Role "postgres" does not exist.

Вот настройка docker-compose:

version: '3.4'

services:
  postgres:
    image: postgres:11
    container_name: postgres
    ports:
      - "5432:5432"
    environment:
      - POSTGRES_DB=orca
      - POSTGRES_USER=${POSTGRES_USER:-postgres}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-password}
      - POSTGRES_SCHEMA=clinics

Команда:

POSTGRES_USER=arthur POSTGRES_PASSWORD=password docker-compose -f docker-compose.development.yml up

Однако переопределение только для самого контейнера докеров вне docker-compose не приводит к той же проблеме. Следующая команда не приводит к тем же ошибкам.

$ docker container run -e POSTGRES_USER=arthur -e POSTGRES_PASSWORD=password -e POSTGRES_DB=orca -e POSTGRES_SCHEMA=clinics postgres:11

Я удалил свойства volumes, env_file, чтобы уменьшить количество источников проблемы, но до сих пор не могу найти источник проблемы. Кто-нибудь знает, почему это может происходить, или шаги, которые я мог бы использовать для дальнейшего расследования?


person Philippe Hebert    schedule 22.10.2020    source источник


Ответы (1)


Docker compose не поддерживает bash или другие функции оболочки. То, как вы пытаетесь установить значение по умолчанию для переменной среды:

- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-password}

просто не работает.

Попробуйте использовать простую замену переменных среды, как описано здесь.

Вы можете выполнять действия по умолчанию из файла компоновки докеров во время выполнения команды.

person Ali Asgari    schedule 22.10.2020
comment
Спасибо за Ваш ответ! Я попытаюсь завтра. Мне это кажется странным, потому что это работало раньше (или по какой-то случайности выглядело как работающее), и у меня недостаточно знаний bash, чтобы придумать этот синтаксис - он исходит из предыдущего примера docker-compose, который я пришел через. - person Philippe Hebert; 23.10.2020