首页 > 解决方案 > Docker:如何在数据库映像中保留入口点

问题描述

我有一个名为base-image-A

FROM postgres
ADD /scripts /docker-entrypoint-initdb.d

在脚本中是一个脚本:custom.sql 我构建图像并执行它。有用。

现在我创建一个源自以下内容的图像base-image-A

FROM base-image-A
ADD ./different-scripts/ /docker-entrypoint-initdb.d

这也很好。执行原始脚本和新脚本。但是当我尝试挂载时会出现问题

docker run -d ... -v ./different-scripts/ /docker-entrypoint-initdb.d/ base-image-A

现在只执行新脚本,而不是来自 base-image-a (custom.sql) 的原始脚本。它可能被安装覆盖。有没有办法使这项工作和脚本持久化?

标签: docker

解决方案


问题是您通过在它们之上安装新脚本目录来隐藏原始脚本,其中:

-v ./different-scripts/:/docker-entrypoint-initdb.d/

正如@sp0gg 所说,你可以试试这个(我还没有测试过):

-v ./different-scripts:/docker-entrypoint-initdb.d/different-scripts/

不同之处在于这会将新目录安装在旧目录下,而不是在其顶部。但是,--mount正如@b0gsub 的回答中所使用的那样,如今该变体更可取。


推荐阅读