postgresql 使用Docker合成创建表和方案postgres

bnlyeluc  于 2023-03-08  发布在  PostgreSQL
关注(0)|答案(2)|浏览(150)

我正在尝试使用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));

先谢了!

fnvucqvd

fnvucqvd1#

我可以通过创建实际文件夹重现您的问题:

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

请仔细检查您的本地设置,因为您的“scripts/postgres”文件夹中可能有一个名为1-schema.sql的文件夹。请在您的项目文件夹中运行以下命令进行检查:

ls -lart ./scripts/postgres
bvuwiixz

bvuwiixz2#

我在本地创建了一个文件夹,这导致了冲突。当我从我的项目结构中删除它时,错误就消失了。

相关问题