Awe*_*ler 6 postgresql docker dockerfile
我正在尝试扩展官方docker postgres图像,以便安装自定义python模块,以便我可以使用plpython3存储过程.
这是我的dockerfile
FROM postgres:9.5
RUN apt-get update && apt-get install -y postgresql-plpython3-9.5 python3
ADD ./repsug/ /opt/smtnel/repsug/
WORKDIR /opt/smtnel/repsug/
RUN ["python3", "setup.py", "install"]
WORKDIR /
Run Code Online (Sandbox Code Playgroud)
我的问题是:我需要在我的Dockerfile中添加ENTRYPOINT和CMD命令吗?或者它们是从基础图像"继承"的?
官方readme.md中的示例显示了Dockerfile,它只更改了语言环境,没有ENTRYPOINT或CMD.
我还在自述文件中读到,我可以通过执行自定义sh和/或sql脚本来扩展图像.我应该使用此功能而不是创建自定义图像吗?在这种情况下的问题是我如何确保脚本只在"安装时"运行一次,而不是每次都运行?我的意思是,如果已经创建并填充了数据库,我不想覆盖它.
谢谢,Awer
如果在Dockerfile中定义新的ENTRYPOINT,它将覆盖继承的ENTRYPOINT.因此,在这种情况下,Postgres将无法自动初始化(除非你写相同的ENTRYPOINT).
https://docs.docker.com/engine/reference/builder/#entrypoint
此外,官方的postgres图像允许您在/docker-entrypoint-initdb.d文件夹中添加.sql/.sh文件,因此可以在初始化数据库后执行它们.
最后,如果您不希望Postgres删除您的数据,您可以在/var/lib/postgresql/data文件夹和每个docker run ...命令中的本地文件夹之间安装卷以保留它们.
| 归档时间: |
|
| 查看次数: |
3074 次 |
| 最近记录: |