Bla*_*irW 5 postgresql docker-compose
我正在尝试使用 docker-compose 文件创建一个包含架构和表的 postgres 数据库。
我已经阅读了有关此主题的一些帖子,并尝试了建议的解决方案:使用卷将 .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/
Run Code Online (Sandbox Code Playgroud)
/scripts/postgres 中的文件是:
1-schema.sql
CREATE SCHEMA myschema;
Run Code Online (Sandbox Code Playgroud)
2-table.sql
CREATE TABLE myschema.mytable(id integer PRIMARY KEY, purchase_date date, unit integer, description varchar(300));
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
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
Run Code Online (Sandbox Code Playgroud)
我还尝试将卷定义为:
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
Run Code Online (Sandbox Code Playgroud)
但仍然遇到同样的错误:(
关于为什么失败以及可能的修复有什么建议吗?
编辑:@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));
Run Code Online (Sandbox Code Playgroud)
提前致谢!
我可以通过创建实际文件夹来重现您的问题:
mkdir ./scripts/postgres/0-schema.sql
docker-compose up
Run Code Online (Sandbox Code Playgroud)
然后我得到了你的错误:
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
Run Code Online (Sandbox Code Playgroud)
仔细检查您的本地设置,因为您的“scripts/postgres”文件夹中可能有一个名为 1-schema.sql 的文件夹。通过在项目文件夹中运行来检查这一点:
ls -lart ./scripts/postgres
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13919 次 |
| 最近记录: |