首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dockerfile配置不用于在Dockerfile中添加

Dockerfile配置不用于在Dockerfile中添加
EN

Stack Overflow用户
提问于 2019-02-08 19:33:52
回答 1查看 48关注 0票数 0

我尝试编写一个Dockerfile,它将一个文件添加到图像中,如下所示:

代码语言:javascript
复制
ADD https://repository.internal/file.zip /tmp/

repository.internal主机只能通过代理访问。我为代理配置提供了--config选项,但是ADD命令似乎没有使用代理,但失败了。

我知道代理配置是正确的,因为我添加了行

代码语言:javascript
复制
RUN curl https://repository.internal/file.zip

效果很好。

是否有可能同时使用代理配置运行ADD命令?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-09 14:42:51

根据我上面的评论,我认为这与Docker构建过程处理ADDRUN命令的内部方式有关.我找不到文档来支持这一点--因此,具有更多内部知识的人可能会确认或否认,但这是有意义的,因为RUN命令是在正在构建的映像的一个层中执行的,在该层执行ADD命令并将其结果烘焙到图像中。

无论以何种方式处理这一问题,您都可以通过移动到RUN方法实现所需的目标,如下所示:

代码语言:javascript
复制
FROM <your base image>

RUN curl https://repository.internal/file.zip >> /tmp/file.zip \
    && cd /tmp \ 
    && unzip file.zip \
    && rm file.zip

你会把文件解压缩。

您可能需要检查是否需要在末尾的rm -如果unzip命令删除了原始的zip文件,您就记不起来了。

正如您所提到的,这将依赖于映像上可用的curlunzip包.但是,通过使用码头多阶段建设,您可能会避免在最终的应用程序映像中使用这些

然后,您的Dockerfile将类似于:

代码语言:javascript
复制
FROM <some useful base image> as collector

RUN apt-get install -y curl unzip
RUN mkdir /tmp/files && \
    && curl https://repository.internal/file.zip >> /tmp/files/file.zip \
    && cd /tmp/files \ 
    && unzip file.zip \
    && rm file.zip

FROM <your final desired base image>

COPY --from=collector /tmp/files /tmp

然后,这将使用包含curlunzip的映像来收集和处理提取的文件,而不必将它们安装到最终的应用程序映像中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54599086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档