docker-entrypoint.sh忽略/docker-entrypoint-initdb.d/my.backup

时间:2020-10-09 00:47:58

标签: postgresql docker

我正在尝试初始化一个使用Postgres运行的容器

FROM postgres:9.6

COPY my.backup /docker-entrypoint-initdb.d/

在我的Dockerfile中

运行时,输出为:

root@pc ~ % docker run  -p 5432:5555 -e POSTGRES_PASSWORD=postgres 

属于该数据库系统的文件将由用户“ postgres”拥有。 该用户还必须拥有服务器进程。

数据库集群将使用语言环境“ en_US.utf8”进行初始化。 因此,默认数据库编码已设置为“ UTF8”。 默认的文本搜索配置将设置为“英语”。

数据页校验和已禁用。

对现有目录/ var / lib / postgresql / data的修复权限...确定 创建子目录...好 选择默认的max_connections ... 100 选择默认的shared_buffers ... 128MB 选择默认时区... Etc / UTC 选择动态共享内存实现... posix 创建配置文件...确定 正在运行引导脚本...确定 执行引导程序后初始化...确定 将数据同步到磁盘...确定

成功。现在,您可以使用以下命令启动数据库服务器:

pg_ctl -D / var / lib / postgresql / data -l日志文件开始

等待服务器启动。...日志:数据库系统在UTC 2020-10-09 00:41:58关闭 日志:现在启用了MultiXact成员环绕保护 日志:数据库系统已准备好接受连接 日志:自动真空启动器已启动 完成 服务器已启动

/usr/local/bin/docker-entrypoint.sh:忽略 /docker-entrypoint-initdb.d/my.backup

我已经检查了文件权限

如何确定初始化脚本为何忽略我的备份?

1 个答案:

答案 0 :(得分:1)

如果my.backup是Shell脚本,则需要给它扩展名.sh。来自the documentation

如果要在从该图像派生的图像中进行其他初始化,请在/docker-entrypoint-initdb.d下添加一个或多个* .sql,*。sql.gz或* .sh脚本(创建目录)。入口点调用initdb创建默认的postgres用户和数据库后,它将运行任何* .sql文件,任何可执行的* .sh脚本并提供该目录中所有不可执行的* .sh脚本,以进行进一步的初始化。启动服务。