我正在尝试初始化一个使用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
我已经检查了文件权限
如何确定初始化脚本为何忽略我的备份?
答案 0 :(得分:1)
如果my.backup
是Shell脚本,则需要给它扩展名.sh
。来自the documentation:
如果要在从该图像派生的图像中进行其他初始化,请在/docker-entrypoint-initdb.d下添加一个或多个* .sql,*。sql.gz或* .sh脚本(创建目录)。入口点调用initdb创建默认的postgres用户和数据库后,它将运行任何* .sql文件,任何可执行的* .sh脚本并提供该目录中所有不可执行的* .sh脚本,以进行进一步的初始化。启动服务。