Я пытаюсь создать базу данных 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));
Заранее спасибо!