扩展 docker 官方 postgres 图像
Extending docker official postgres image
我正在尝试扩展官方 docker postgres 映像以安装自定义 python 模块,以便我可以通过 plpython3 存储过程使用它。
这是我的docker文件
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 /
我的问题是:我需要将 ENTRYPOINT 和 CMD 命令添加到我的 Dockerfile 中吗?还是它们 "inherited" 来自基本图像?
官方readme.md中的示例显示了一个只更改语言环境的Dockerfile,没有ENTRYPOINT或CMD。
我还在自述文件中读到我可以通过执行自定义 sh and/or sql 脚本来扩展图像。我应该使用此功能而不是创建我的自定义图像吗?这种情况下的问题是我如何确保脚本 运行 仅在 "install time" 时出现一次而不是每次?我的意思是,如果数据库已经创建并填充,我不想覆盖它。
谢谢,
阿维尔
如果您在 Dockerfile 中定义新的 ENTRYPOINT,它将覆盖继承的 ENTRYPOINT。所以在那种情况下,Postgres 将无法自动初始化(除非你写了相同的 ENTRYPOINT)。
https://docs.docker.com/engine/reference/builder/#entrypoint
此外,官方 postgres 映像允许您在 /docker-entrypoint-initdb.d
文件夹中添加 .sql/.sh 文件,以便在数据库初始化后执行它们。
最后,如果您不希望 Postgres 删除您的数据,您可以在每个 docker run ...
命令中的 /var/lib/postgresql/data
文件夹和本地文件夹之间安装一个卷以保留它们。
我正在尝试扩展官方 docker postgres 映像以安装自定义 python 模块,以便我可以通过 plpython3 存储过程使用它。
这是我的docker文件
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 /
我的问题是:我需要将 ENTRYPOINT 和 CMD 命令添加到我的 Dockerfile 中吗?还是它们 "inherited" 来自基本图像?
官方readme.md中的示例显示了一个只更改语言环境的Dockerfile,没有ENTRYPOINT或CMD。
我还在自述文件中读到我可以通过执行自定义 sh and/or sql 脚本来扩展图像。我应该使用此功能而不是创建我的自定义图像吗?这种情况下的问题是我如何确保脚本 运行 仅在 "install time" 时出现一次而不是每次?我的意思是,如果数据库已经创建并填充,我不想覆盖它。
谢谢, 阿维尔
如果您在 Dockerfile 中定义新的 ENTRYPOINT,它将覆盖继承的 ENTRYPOINT。所以在那种情况下,Postgres 将无法自动初始化(除非你写了相同的 ENTRYPOINT)。
https://docs.docker.com/engine/reference/builder/#entrypoint
此外,官方 postgres 映像允许您在 /docker-entrypoint-initdb.d
文件夹中添加 .sql/.sh 文件,以便在数据库初始化后执行它们。
最后,如果您不希望 Postgres 删除您的数据,您可以在每个 docker run ...
命令中的 /var/lib/postgresql/data
文件夹和本地文件夹之间安装一个卷以保留它们。