postgres с docker compose дает FATAL: роль "root" не существует, ошибка - PullRequest
0 голосов
/ 12 февраля 2020

Я пытаюсь создать простую демонстрацию с postgres на локальной windows машине с docker рабочим столом.
Это мой yaml docker составной файл с именем img.yaml:

version: '3.6'

services:

    postgres-demo:
      image: postgres:11.5-alpine
      container_name: postgres-demo
      environment:
        - POSTGRES_USER=postgres
        - POSTGRES_PASSWORD=Welcome
        - POSTGRES_DB=conference_app
      healthcheck:
        test: ["CMD-SHELL", "pg_isready -U postgres"]
        interval: 10s
        timeout: 5s
        retries: 5
      ports:
        - 5432:5432
      volumes:
        - .:/var/lib/my_data
      restart: always

Я запускаю его с помощью команды: docker-compose -f img.yaml up И получаю следующий вывод:

Starting postgres-demo ... done
Attaching to postgres-demo
postgres-demo    | 2020-02-12 17:07:46.487 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
postgres-demo    | 2020-02-12 17:07:46.487 UTC [1] LOG:  listening on IPv6 address "::", port 5432
postgres-demo    | 2020-02-12 17:07:46.508 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
postgres-demo    | 2020-02-12 17:07:46.543 UTC [18] LOG:  database system was shut down at 2020-02-12 17:07:10 UTC
postgres-demo    | 2020-02-12 17:07:46.556 UTC [1] LOG:  database system is ready to accept connections

И затем, открывая bash в контейнер с помощью команды: docker exec -it d47056217a97 bash
Я хочу посмотреть базы данных в контейнере, поэтому я запускаю команду bash: psql \dt
и получаю сообщение об ошибке: psql: FATAL: role "root" does not exist.
Попытка создать базу данных с помощью команды: psql> create database conference_app; выдает ошибку: psql: FATAL: role "conference_app" does not exist.
Я озадачен. Что я делаю неправильно? Мой ямл чего-то не хватает?

1 Ответ

1 голос
/ 12 февраля 2020

Если вы не укажете переменную среды PGUSER, то psql будет предполагать, что вы хотите использовать текущего пользователя ОС в качестве имени пользователя вашей базы данных. В этом случае вы используете root в качестве пользователя вашей ОС и попытаетесь войти в систему как root, но этого пользователя нет в базе данных.

Вам потребуется либо вызов psql с флагом -U Postgres или su - Postgres first

См. также документацию postgresql

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...