【发布时间】:2017-07-31 16:51:29
【问题描述】:
我在 dockerfile 中使用 Python_onbuild 作为基础镜像,如下所示。但是,每当我对源文件进行更改时,都会使缓存无效,从而导致我的命令重复。
FROM python:2.7.13-onbuild
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
RUN echo "Test Cache"
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install --assume-yes apt-utils
RUN apt-get update && apt-get install -y curl
RUN apt-get update && apt-get install -y unzip
RUN curl -o - url
构建日志:
Sending build context to Docker daemon 239.1kB
Step 1/6 : FROM python:2.7.13-onbuild
# Executing 3 build triggers...
Step 1/1 : COPY requirements.txt /usr/src/app/
---> Using cache
Step 1/1 : RUN pip install --no-cache-dir -r requirements.txt
---> Using cache
Step 1/1 : COPY . /usr/src/app
---> 13e927036649
复制(Step 1/1 : COPY . /usr/src/app) 的第三步是在我对工作目录中的任何文件进行更改时重复其余命令。我认为这是来自基本映像的 ONBUILD 命令。如果这是真的,那么在这种情况下替代的基本图像是什么?我应该使用 Python:吗?
我希望对需求安装以及复制过程进行更多控制,因为我必须下载一个 3.6GB 的文件,我不想每次构建 docker 时都重复该文件。
注意:这个特定的基础图像是由其他人选择的,我正在一些现有工作的基础上构建。
【问题讨论】:
-
您可以将源代码复制部分移动到dockerfile的末尾..以及之前的安装过程,这样您就不必每次更改源代码时都安装。
-
@viveksyngh 我无法更改复制部分,因为它是由基本映像处理的。如您所见,我的 dockerfile 中没有明确的复制命令。
标签: python docker dockerfile