Как указать текущую рабочую базу данных для сценария инициализации контейнера Docker Postgres? - PullRequest
0 голосов
/ 28 апреля 2018

Известно, что можно создать файл init.sql, который будет выполнен при создании контейнера, с помощью команды docker, подобной этой: COPY init.sql /docker-entrypoint-initdb.d/

Давайте рассмотрим, что используется очень простой оператор создания таблицы postgresql:

CREATE TABLE films (
  code        char(5) CONSTRAINT firstkey PRIMARY KEY,
  title       varchar(40) NOT NULL,
  did         integer NOT NULL,
  date_prod   date,
  kind        varchar(10),
  len         interval hour to minute
);

Вопрос , где (в какой базе данных) эта таблица создана?

Но более важно , как установить текущую рабочую базу данных , чтобы точно указать, с какой базой данных мы работаем ??
Не только для этого утверждения, но и для всех последующих, и их много!

1 Ответ

0 голосов
/ 18 мая 2018

Это подробно объясняет инициализацию базы данных. Как создать пользователя / базу данных в скрипте для Docker Postgres .

Короче говоря, имя базы данных, созданной во время инициализации и где ваши таблицы создаются по умолчанию, задается переменной среды POSTGRES_DB. Если переменная не установлена, вместо нее используется значение по умолчанию postgres.

Сценарии в папке docker-entrypoint-initdb.d выполняются один за другим с помощью следующей команды:

psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" -f <your-file>

поэтому вы подключены к базе данных POSTGRES_DB (посмотрите на скрипт docker-entrypoint.sh).

В ваших файлах сценариев вы, тем не менее, можете подключиться к другой базе данных с помощью мета-команды

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