我正在我的dockfile中下載1.6 GB的二進制壓縮文件,然後使用gunzip將其解壓縮,從而導致存儲3.6 GB文件。我不希望它會一直重複,因爲它需要很長時間。它是一個靜態文件,所以每次使用Jenkins/docker將更改部署到服務器時都不應下載它。但是,每次下載時,我都會進行更改,然後運行Jenkins來部署它們。如何避免Dockerfile中的大型二進制文件緩存失效(Python_Onbuild)
這裏是我的搬運工文件:
FROM python:2.7.13-onbuild
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
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 - https://s3.amazonaws.com/dl4j-distribution/GoogleNews-vectors-negative300.bin.gz \
| gunzip > /usr/src/app/GoogleNews-vectors-negative300.bin
UPDATE: 我改變了dockfile到一個簡單的下面給出:
FROM python:2.7.13-onbuild
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
RUN echo "Test Cache"
CMD /usr/local/bin/gunicorn -t 240 -k gevent -w 1 -b 0.0.0.0:8000 --reload src.wsgi:app
現在,如果我不改變代碼或任何其他文件,這工作正常,所以命令echo "test cache"
不重複。但是,只要我對源文件夾中的任何文件進行了任何更改,就會重複執行以下步驟後的所有命令,我認爲它們將源代碼複製到了docker目錄中。這不應該發生在這個階段,因爲這意味着我做任何提交後,所有的命令都會重複。
下面是當我沒有對代碼做任何更改,並且第二次運行生成的輸出:
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
---> Using cache
---> 1911c6dc9fce
Step 2/6 : RUN mkdir -p /usr/src/app
---> Using cache
---> 4019b029d05c
Step 3/6 : WORKDIR /usr/src/app
---> Using cache
---> 1a99833e908c
Step 4/6 : RUN echo "Test Cache"
---> Using cache
---> 488a62aa1b09
這裏就是我做一個切換到一個源文件和輸出你可以看到回聲「測試緩存」重複。
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
---> 6fd1003e246a
Removing intermediate container f25a4d2910cf
Step 2/6 : RUN mkdir -p /usr/src/app
---> Running in ff324f381875
---> 3694086a2b6a
Removing intermediate container ff324f381875
Step 3/6 : WORKDIR /usr/src/app
---> 5f23ab9a15df
Removing intermediate container 0b0d796f97d0
Step 4/6 : RUN echo "Test Cache"
---> Running in 296d2f141015
Test Cache
---> f90c7708d9eb
可以粘貼您的構建日誌在這裏? –
@WassimDhif我不能把所有的日誌,在這裏,因爲這將是太多,但我只是把一個有關這個特定的命令。更新了問題。 – utengr