扩展docker图像以保留其入口点



我创建了一个映像,该映像具有在容器启动时运行的入口点脚本。我把这个图片用于不同的目的。现在,我想扩展这个图像,但在启动容器之前,但在创建图像之后,它需要修改容器中的一些文件。因此,第二个图像也将有一个入口点脚本。那么,我只是从第二个图像的入口点脚本中调用基础图像的入口端脚本吗?或者有更优雅的解决方案吗?

提前感谢

一个图像只有一个ENTRYPOINT(和一个CMD(。在您描述的情况下,您的新入口点需要显式调用旧入口点。

#!/bin/sh
# new-entrypoint.sh
# modify some files in the container
sed -e 's/PLACEHOLDER/value/g' /etc/config.tmpl > /etc/config
# run the original entrypoint; make sure to pass the CMD along
exec original-entrypoint.sh "$@"

请记住,在派生的Dockerfile中设置ENTRYPOINT也会重置CMD,因此您必须重述这一点。

ENTRYPOINT ["new-entrypoint.sh"]
CMD original command from base image

同样值得仔细检查的是,基础映像是否有一些扩展功能或其他路径来注入配置文件。大多数标准数据库映像将从/docker-entrypoint-initdb.d目录运行初始化脚本,该目录可以绑定安装,因此在这种情况下可以避免自定义映像;CCD_ 6图像知道如何替换环境变量;在许多情况下,您可以docker run -v将一个配置文件目录绑定到一个容器中。这些方法可能比替换或包装ENTRYPOINT更容易。

最新更新