我正在尝试使用Docker-Composer文件创建一个包含模式和表的Postgres数据库。
我读了一些关于这个主题的帖子,并尝试了建议的解决方案:使用卷将. sql文件复制到/docker-entrypoint-initdb. d/中,因为它们应该被执行。
我的码头布局是:
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中的文件包括:
x一个一个一个一个x一个一个二个x
我得到了以下错误:
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
但仍然得到相同的错误:(
关于它为什么失败和可能的修复方法,有什么建议吗?
EDIT:@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));
先谢了!
2条答案
按热度按时间fnvucqvd1#
我可以通过创建实际文件夹重现您的问题:
我明白你的错误了:
请仔细检查您的本地设置,因为您的“scripts/postgres”文件夹中可能有一个名为1-schema.sql的文件夹。请在您的项目文件夹中运行以下命令进行检查:
bvuwiixz2#
我在本地创建了一个文件夹,这导致了冲突。当我从我的项目结构中删除它时,错误就消失了。