我有一个名为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)中的原始脚本。它可能被mount覆盖了。有没有办法让这个工作并坚持脚本?
答案 0 :(得分:0)
根据@ sp0gg注释,解决方案是将SELECT * FROM B
INNER JOIN AB ON AB.id = B.ab_id AND AB.date IS NULL
挂载到不同的目录(比如different-scripts
),并将该目录中的脚本链接到scripts
。如下所示:
/docker-entrypoint-initdb.d
它应该在容器初始化之前链接你的文件。
答案 1 :(得分:0)
问题在于您通过在其上安装新脚本目录来隐藏原始脚本,并使用:
-v ./different-scripts/:/docker-entrypoint-initdb.d/
正如@ sp0gg所说,你可以试试这个(我还没有测试过):
-v ./different-scripts:/docker-entrypoint-initdb.d/different-scripts/
不同之处在于,它将新目录安装在旧目录下,而不是在其顶部。但是,{@ 1}}变体现在更受欢迎,正如@ b0gsub的回答中所使用的那样。