我扩展了官方的postgres-9.5图像,使用图像内的转储启动预先填充的容器。 我扩展了entrypoint.sh以执行一些旨在删除重型转储的post-init命令。
postgres
total 427632
drwxr-xr-x 2 postgres postgres 4096 May 1 15:46 .
drwxr-xr-x 59 root root 4096 May 1 15:54 ..
-rw-r--r-- 1 postgres postgres 437876014 Apr 27 07:42 dump.sql
-rw-rw-r-- 1 postgres postgres 236 Apr 27 20:20 init-user-db.sh
rm: cannot remove ‘/docker-entrypoint-initdb.d/’: Permission denied
但是我不明白为什么我的部分失败了,也许是因为Docker内部机制在这个阶段使它成为只读,即使是文件的所有者(第一行是whoami)......但是如果我使用docker exec root,我可以手动删除它们。
这不是阻塞问题,但我找不到任何回答我的文档。
编辑: 根据要求,这是我添加到入口点以获得上面的输出
echo
echo 'PostgreSQL init process complete; ready for start up.'
echo
# Cleanup => user=postgresql
whoami
ls -la /docker-entrypoint-initdb.d/
rm -rf /docker-entrypoint-initdb.d/
echo 'Removed init files'
Dockerfile
FROM postgres:9.5
LABEL maintainer "Hiruma"
ADD nightly-dump/ /docker-entrypoint-initdb.d/
ADD init-user-db.sh /docker-entrypoint-initdb.d/init-user-db.sh
RUN chown -R postgres:postgres /docker-entrypoint-initdb.d/
ENTRYPOINT ["docker-entrypoint.sh"]
EXPOSE 5432
CMD ["postgres"]