最初的回答:
我正在尝试使用docker-compose文件创建包含模式和表的Postgres数据库。
我已经阅读了一些关于这个主题的帖子并尝试了建议的解决方案:将.sql文件通过卷复制到/docker-entrypoint-initdb.d/中,因为它们应该会被执行。
我的docker-compose文件如下:
最初的回答:我遇到了以下错误:
翻译内容:
最初的回答中提到了定义卷的尝试,具体方法如下:
最初的回答
我的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的文件夹。以下是建议命令的输出:
Original Answer翻译成:"最初的回答"
$ 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));
最初的回答
提前感谢!
docker-compose down
docker-compose build
docker-compose up
- undefined$ ls -lart ./scripts/postgres 总计 16 -rw-r--r--@ 1 user staff 26 5月 13 22:21 01_schema.sql -rw-r--r--@ 1 user staff 152 5月 13 22:21 02_table.sql drwxr-xr-x 9 user staff 288 5月 13 22:50 .. drwxr-xr-x 4 user staff 128 5月 14 19:21 ..
Docker Compose 中的卷为:- ./scripts/postgres/01_schema.sql:/docker-entrypoint-initdb.d/01_schema.sql - ./scripts/postgres/02_table.sql:/docker-entrypoint-initdb.d/02_table.sql
- undefinedpostgres | /usr/local/bin/docker-entrypoint.sh: 正在运行 /docker-entrypoint-initdb.d/01_schema.sql postgres | psql:/docker-entrypoint-initdb.d/01_schema.sql:0: 无法从输入文件中读取:是一个目录 postgres 退出,代码为 1
- undefined