Ошибка проверки подлинности пароля Docker-compose postgresql

#postgresql #docker #docker-compose

#postgresql #docker #docker-compose

Вопрос:

Я пытаюсь настроить веб-сервис, который использует базу данных postgres. Должно быть простым в настройке, но я получаю ошибки. Итак, первое, что я хочу убедиться, это то, что база данных, которую я настроил, действительно существует и работает.

Чтобы проверить это, я заменяю «потребитель» или «клиент» на интерактивную оболочку alpine следующим образом:

 version: '3'
services:

  db:
    image: postgres:10.1-alpine
    container_name: db
    expose:
      - 5432
    volumes:
      - "dbdata:/var/lib/postgresql/data"
    environment:
      - POSTGES_USER=user
      - POSTGRES_PASSWORD=pass
      - POSTGRES_DB=db

  web:
    image: alpine:latest
    stdin_open: true
    tty: true
    entrypoint: /bin/sh
    depends_on:
      - db

volumes:
  dbdata:
  

Затем я запускаю следующую команду, чтобы войти в интерактивную оболочку:

 docker-compose run web
  

и следующая команда для входа в базу данных:

 apk --update add postgresql-client amp;amp; rm -rf /var/cache/apk/*

psql -h db -U user db
  

Я получаю простой отказ от postgresql:

 psql: FATAL:  password authentication failed for user "user"
  

Одно и то же сообщение об ошибке для каждой комбинации имени пользователя / пароля / имени базы данных, которую я пытаюсь. Не очень полезно.

Что я здесь делаю не так?

Ответ №1:

В вашем docker-compose файле опечатка. Вы неправильно указали POSTGRES здесь:

 POSTGES_USER=user
  

Это означает user , что пользователь не создается. Если я исправлю эту опечатку, чтобы у меня:

 version: '3'
services:

  db:
    image: postgres:10.1-alpine
    expose:
      - 5432
    volumes:
      - "dbdata:/var/lib/postgresql/data"
    environment:
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=pass
      - POSTGRES_DB=db

  web:
    image: alpine:latest
    stdin_open: true
    tty: true
    entrypoint: /bin/sh
    depends_on:
      - db

volumes:
  dbdata:
  

Запустите среду:

 docker-compose up -d
  

Присоединитесь к web содержимому и установите клиент postgresql:

 $ docker attach project_web_1
/ # apk add --update postgresql-client
  

Тогда я могу подключиться без проблем:

 / # psql -h db -U user db
Password for user user:
psql (11.2, server 10.1)
Type "help" for help.

db=#