База и пользователь в Docker
База и пользователь создаются
переменными окружения
на пустом каталоге данных.
POSTGRES_DB
задаёт имя базы,
POSTGRES_USER -
главного пользователя кластера.
Пароль старта
по-прежнему обязателен.
Для чистого эксперимента
объявим свой том appdata,
чтобы старые файлы
не мешали новым именам.
Сервис db
на postgres:18:
services:
db:
image: postgres:18
environment:
POSTGRES_PASSWORD: demo
POSTGRES_DB: db
POSTGRES_USER: app
volumes:
- appdata:/var/lib/postgresql
volumes:
appdata:
Фоновый подъём
на пустом appdata
создаёт базу db
и пользователя app
с паролем demo:
docker compose up -d
Проверка входа под пользователем кластера, не под стандартным именем по умолчанию:
docker compose exec db psql -U app -d db -c "SELECT current_database(), current_user;"
Клиент подключается
без ошибки доступа,
в ответе видны база db
и пользователь app.
Если том уже содержал
старые файлы,
новые переменные
учётку не перезапишут -
нужен свежий том.
Задайте на пустом томе shopdata базу shop и пользователя shop с учебным паролем рядом с паролем demo.
Убедитесь внутри сервиса, что вход под shop открывает базу shop без сообщения об отказе.