docker postgresql: Почему владелец схемы publi c не является postgres новой созданной базы данных, если я укажу POSTGRES_USER = "testing" - PullRequest
0 голосов
/ 06 мая 2020

У меня есть следующая конфигурация в файле docker -compose

  postgresql:
    image: "postgres:11-alpine"
    volumes:
      - type: bind
        source: ./postgresql
        target: /var/lib/postgresql/data
    environment:
      POSTGRES_USER: 'testing'
      POSTGRES_PASSWORD: 'testing'
      POSTGRES_DB: 'testing'
      PGDATA: '/var/lib/postgresql/data/pgdata'

Когда я запускаю docker -compose, я обнаружил, что есть роль с именем testing и база данных с именем testing

В базе данных testing есть schema с именем public.

Я вижу, что owner из public это testing

Как Это возможно. Обычно, когда мы создаем новую базу данных, копируется template1. Таким образом, владельцем схемы public должен быть postgres

Если он установлен Dockerfile, то как это делается. Я хочу знать, какая команда это делает.

Я проверил docker-entrypoint.sh https://github.com/docker-library/postgres/blob/33bccfcaddd0679f55ee1028c012d26cd196537d/11/alpine/docker-entrypoint.sh

Я нашел одну команду, используемую для создания пользователя. команда:

eval 'initdb --username="$POSTGRES_USER" --pwfile=<(echo "$POSTGRES_PASSWORD") '"$POSTGRES_INITDB_ARGS"' "$@"'

Как мы можем использовать initdb для создания пользователя. Обычно мы CREATE ROLE sql или createuser команда

Если возможно, как именно это достигается, когда владелец public изменился на testing

ТАКЖЕ я нашел схему public владелец для имени базы данных postgres также testing.

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