docker-entrypoint.sh ignoring /docker-entrypoint-initdb.d/my



我正在尝试使用初始化运行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";。该用户还必须拥有服务器进程。

数据库集群将用语言环境"locale"初始化;en_US.utf8";。默认数据库编码相应地被设置为"0";UTF8";。默认的文本搜索配置将被设置为"0";英语";。

数据页校验和被禁用。

正在修复现有目录/var/lib/postgresql/data的权限。。。好啊正在创建子目录。。。好啊正在选择默认的最大连接数。。。100正在选择默认的shared_buffers。。。1.28亿正在选择默认时区。。。Etc/UTC正在选择动态共享内存实现。。。posix正在创建配置文件。。。好啊正在运行引导程序脚本。。。好啊正在执行引导后初始化。。。好啊正在将数据同步到磁盘。。。ok

成功。您现在可以使用启动数据库服务器

pg_ctl-D/var/lib/postgresql/data-l日志文件启动

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

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

我已检查文件权限

如何确定init脚本为什么忽略我的备份?

如果my.backup是shell脚本,则需要为其提供.sh扩展名。来自文件:

如果您想在从该映像派生的映像中进行额外初始化,请在/docker entrypoint initdb.d下添加一个或多个*.sql、*.sql.gz或*.sh脚本(如有必要,请创建目录(。在入口点调用initdb以创建默认的postgres用户和数据库后,它将运行任何*.sql文件,运行任何可执行的*.sh脚本,并在启动服务之前,从该目录中找到任何不可执行的%.sh脚本以进行进一步的初始化。

相关内容

最新更新