【发布时间】:2016-02-10 15:18:11
【问题描述】:
我正在尝试扩展官方 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 /
我的问题是:我需要在我的 Dockerfile 中添加 ENTRYPOINT 和 CMD 命令吗?还是它们是从基础映像“继承”的?
官方 readme.md 中的示例显示了一个仅更改语言环境的 Dockerfile,没有 ENTRYPOINT 或 CMD。
我还在自述文件中读到,我可以通过执行自定义 sh 和/或 sql 脚本来扩展图像。我应该使用此功能而不是创建自定义图像吗?在这种情况下,问题是我如何确保脚本在“安装时”只运行一次,而不是每次?我的意思是,如果数据库已经创建并填充,我不想覆盖它。
谢谢, 阿维尔
【问题讨论】:
-
在我看来,ENTRYPOINT 和 CMD 是继承的,但是因为你只能有一个这样的命令,所以只有最后一个有效,所以如果你添加一个,它将是最后一个 CMD或ENTRYPOINT,它将被使用
标签: postgresql docker dockerfile