我有一个构建4个图像的Rockerfile;我还有一个中央.dockerignore文件.对于其中一个图像,我需要被.dockerignore文件阻止的资产 – 在执行ADD或copY强制添加/忽略此列表时是否有办法?
最佳答案
在正常的Docker构建中,.dockerignore文件会影响打包并在构建开始时发送到docker服务器的“构建上下文”.如果“构建上下文”不包含文件,则无法引用它们,因此这就是文件的排除方式.它们并不是“存在”的构建.
摇杆claims to run differently by not sending a build context到服务器. code looks like each ADD
/COPY
step is composed into a tar file that ignores the files.此外,.dockerignore
is read once at startup and cached.
由于Rocker没有在每次构建之前发送构建上下文,只对每个ADD / copY命令进行过滤,因此有希望.但是由于忽略数据只在启动时被读取一次,所以你不能做任何像在构建的不同阶段复制不同的.dockerignore文件一样的时髦.
使用MOUNT
一种选择是继续按原样使用.dockerignore,并使用Rocker MOUNT
command手动复制被忽略的目录.他们在mount部分的最后一个例子演示了:
FROM debian:jessie
ADD . /app # assets/ in .dockerignore
workdir /app
MOUNT .:/context
RUN cp -r /context/assets /app # include assets/
更改应用结构
我能想到的唯一其他有用选项是将ADD或copY拆分为多个命令,这样就不必依赖.dockerignore将文件过滤到其他3个图像.这可能需要将您的资产目录存储在应用程序根目录之外.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。