更新Docker卷上的数据

比方说,我有一个Linux应用程序,通常以RPM的forms分发,包括创build和初始化数据存储目录的后处理脚本,比如/data ,如果它不存在,并且更新数据格式(I指定我使用RPM的问题,使问题更确定,但当然这个问题将是相同的任何一种安装程序,并在其他操作系统比Linux)。 在Dockerizing这个直接的尝试将导致下面的Dockerfile

 FROM Base ADD *.rpm . rpm -U core.rpm rpm -U app.rpm VOLUME /data 

用户然后将运行该应用程序

 % docker run ... --mount source=datavol,target=/data 

到现在为止还挺好。 但是随后出现更新的core.rpmapp.rpm :Dockerfile将无法正常工作,因为在此阶段无法访问外部安装的datavol ,并且无法完成数据转换。

我能想到的唯一解决scheme是安装RPM,而不运行post-flight脚本,然后在第一次run容器时手动运行这些脚本。 但是这意味着我还必须手动跟踪core.rpm是否已更新,然后是否更新了app.rpm 。 这实际上更复杂,因为我也有飞行前脚本。 虽然这绝对是一个可能的解决scheme,但应该是一个更好的! 那么build议如何处理这种情况呢?