#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=#