Rýchlejšie vytváranie CI s ukladaním docker do pamäte cache a BuildKit

Vyskúšajte Náš Nástroj Na Odstránenie Problémov

Docker Layer Caching

Docker ukladá do vyrovnávacej pamäte každú vrstvu ako obrázok a každá vrstva bude znovu vytvorená iba vtedy, ak sa od predchádzajúceho zostavenia alebo nad ňou zmenila. Vďaka vyrovnávacej pamäti Docker môžete teda výrazne urýchliť zostavovanie. Pozrime sa na rýchly príklad.

Súbor docker :

## pull base image FROM python:3.8.3-slim ## install netcat RUN apt-get update && apt-get -y install netcat && apt-get clean ## set working directory WORKDIR /usr/src/app ## install requirements COPY ./requirements.txt . RUN pip install -r requirements.txt ## add app COPY . . ## run server CMD gunicorn -b 0.0.0.0:5000 manage:app

Úplný zdrojový kód tohto projektu nájdete v úložisku docker-ci-cache na GitHub.



Dokončenie prvého zostavenia Dockeru môže trvať niekoľko minút, v závislosti od rýchlosti vášho pripojenia. Následné zostavenia by mali trvať iba niekoľko sekúnd, pretože vrstvy sa po prvom zostavení uložia do vyrovnávacej pamäte:

Sending build context to Docker daemon 721.4kB Step 1/7 : FROM python:3.8.3-slim ---> 091e4db1c781 Step 2/7 : RUN apt-get update && apt-get -y install netcat && apt-get clean ---> Using cache ---> 74f2b1dca14e Step 3/7 : WORKDIR /usr/src/app ---> Using cache ---> 0afd94dba053 Step 4/7 : COPY ./requirements.txt . ---> Using cache ---> 7249c15cbee8 Step 5/7 : RUN pip install -r requirements.txt ---> Using cache ---> 13bd0d323961 Step 6/7 : COPY . . ---> Using cache ---> 1bc421036d94 Step 7/7 : CMD gunicorn -b 0.0.0.0:5000 manage:app ---> Using cache ---> 18df0fe6ba3f Successfully built 18df0fe6ba3f

Aj keď zmeníte zdrojový kód, jeho vytvorenie by malo trvať iba niekoľko sekúnd, pretože závislosti nebude potrebné sťahovať. Len posledné dve vrstvy je potrebné zrekonštruovať, inými slovami:

Step 6/7 : COPY . . ---> f99ca1babd63 Step 7/7 : CMD gunicorn -b 0.0.0.0:5000 manage:app ---> Running in 0054b494cdc6

Aby ste sa vyhli zneplatneniu vyrovnávacej pamäte:

numpy získať index hodnoty
  1. Spustite súbor Dockerfile pomocou príkazov, u ktorých je menšia pravdepodobnosť zmeny
  2. Príkazy, u ktorých je väčšia pravdepodobnosť, že sa zmenia (napríklad | _+_ |), umiestnite čo najskôr
  3. Pridajte iba potrebné súbory (použite súbor .dockerignore súbor)

#docker #caching #buildkit #travis #circleci #gitlab

testdriven.io

Rýchlejšie vytváranie CI s ukladaním docker do pamäte cache a BuildKit

Tento príspevok sa zameriava na to, ako urýchliť zostavenia založené na Dockere na akciách Travis, CircleCI, GitLab a GitHub pomocou Docker Layer Caching a BuildKit. Docker ukladá do vyrovnávacej pamäte každú vrstvu ako obrázok a každá vrstva bude znovu vytvorená iba vtedy, ak sa od predchádzajúceho zostavenia alebo nad ňou zmenila. Vďaka vyrovnávacej pamäti Docker môžete teda výrazne urýchliť zostavovanie.

Pozri Tiež: