Создать таблицу и схему postgres, используя docker compose - PullRequest
0 голосов
/ 14 мая 2019

Я пытаюсь создать базу данных postgres со схемой и таблицей в ней, используя файл docker- compose.

Я прочитал несколько сообщений по этой теме и попробовал предлагаемые решения: Копирование файлов .sql в/docker-entrypoint-initdb.d/ используя том в том виде, в каком они должны быть выполнены.

Мой docker-compose:

  postgres_db:
       image: postgres:latest
       hostname: postgres-db
       container_name: postgres
       expose:
         - "5432"
       ports:
         - "5432:5432"
       networks:
         - default
       environment:
         - "POSTGRES_PASSWORD=password"
         - "POSTGRES_USER=postgres"
         - "POSTGRES_DB=postgres"
       volumes:
         - ./scripts/postgres:/docker-entrypoint-initdb.d/

Файлы в / scripts / postgres:

1-schema.sql

CREATE SCHEMA myschema;

2-table.sql

CREATE TABLE myschema.mytable(id integer PRIMARY KEY, purchase_date date, unit integer, description varchar(300));

И я получаю следующую ошибку:

postgres       | /usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/1-schema.sql
postgres       | psql:/docker-entrypoint-initdb.d/1-schema.sql:0: could not read from input file: Is a directory
postgres exited with code 1

Также я попытался определить тома как:

       volumes:
         - ./scripts/postgres/1-schema.sql:/docker-entrypoint-initdb.d/1-schema.sql
         - ./scripts/postgres/2-table.sql:/docker-entrypoint-initdb.d/2-table.sql

, но все еще получаю ту же ошибку: (

Любое предложение о том, почему он не работает и возможное исправление?

РЕДАКТИРОВАТЬ: @Mihai, не похоже, что есть папка с именем 1-schema.sql. Нижевывод предлагаемой команды:

$ ls -lart ./scripts/postgres
total 16
-rw-r--r--@ 1 user  staff   26 13 may 22:21 1-schema.sql
-rw-r--r--@ 1 user  staff  152 13 may 22:21 2-table.sql
drwxr-xr-x  4 user  staff  128 13 may 22:43 .
drwxr-xr-x  9 user  staff  288 13 may 22:50 ..

$ cat ./scripts/postgres/1-schema.sql
CREATE SCHEMA myschema;
$ cat ./scripts/postgres/2-table.sql
CREATE TABLE myschema.mytable(id integer PRIMARY KEY, purchase_date date, unit integer, description varchar(300));

Заранее спасибо!

1 Ответ

1 голос
/ 14 мая 2019

Я мог бы воспроизвести вашу проблему, создав и указав фактическую папку:

mkdir ./scripts/postgres/0-schema.sql
docker-compose up

Тогда я получу именно вашу ошибку:

postgres       | /usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/0-schema.sql
postgres       | psql:/docker-entrypoint-initdb.d/0-schema.sql:0: could not read from input file: Is a directory

Дважды проверьте локальную настройку, поскольку у вас может быть папканазывается 1-schema.sql в вашей папке "scripts / postgres".Проверьте это, запустив в папке вашего проекта:

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