如何为postgres docker容器的初始化脚本指定当前工作数据库?

时间:2018-04-28 20:38:48

标签: postgresql docker

众所周知,可以使用与此类似的docker命令复制要在创建容器时执行的init.sql文件:remainder

让我们考虑使用一个非常简单的创建表postgresql语句:

COPY init.sql /docker-entrypoint-initdb.d/

问题是哪里(在哪个数据库中)是否创建了这个表?

但更重要的是如何设置当前工作数据库以准确指定我们正在使用哪个数据库? 不仅适用于本声明,也适用于所有后续声明,而且它们很多!

1 个答案:

答案 0 :(得分:1)

这详细解释了数据库的初始化。 How to create User/Database in script for Docker Postgres

简单地说,在初始化期间创建的数据库的名称以及默认情况下创建表的位置由环境变量POSTGRES_DB给出。如果未设置变量,则使用默认值postgres

使用以下命令逐个执行docker-entrypoint-initdb.d文件夹中的脚本:

psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" -f <your-file>

因此,您已连接到POSTGRES_DB数据库(请查看docker-entrypoint.sh脚本)。

在脚本文件中,您仍然可以使用元命令

连接到其他数据库
\connect DBNAME