Slide 1

Slide 1 text

Слои Docker для ускорения сборки проекта Николай Пасынков, Usetech

Slide 2

Slide 2 text

Николай Пасынков Больше 10 лет в Web Больше 7 лет в JS JS Fullstack Frontend Lead, Usetech

Slide 3

Slide 3 text

CI/CD Dev QA

Slide 4

Slide 4 text

Время ожидания результата

Slide 5

Slide 5 text

CI/CD Dev QA

Slide 6

Slide 6 text

CI/CD Dev QA

Slide 7

Slide 7 text

CI/CD Commit Application

Slide 8

Slide 8 text

Очередь Однородны е события Выход из очереди

Slide 9

Slide 9 text

Время сборки = 10 минут 10 коммитов Время ожидания = 13 минут

Slide 10

Slide 10 text

Время сборки = 20 минут 20 коммитов Время ожидания = 114 минут

Slide 11

Slide 11 text

10 коммитов в день 13 22 34 52 80 123 179 0 45 90 135 180 225 10 15 20 25 30 35 40

Slide 12

Slide 12 text

20 коммитов в день 17 40 114 285 400 516 761 0 200 400 600 800 10 15 20 25 30 35 40

Slide 13

Slide 13 text

10 коммитов в день 13 22 34 52 80 123 179 0 45 90 135 180 225 10 15 20 25 30 35 40

Slide 14

Slide 14 text

10 коммитов, 35 минут сборки, 2 часа ожидания 13 22 34 52 80 123 179 0 45 90 135 180 225 10 15 20 25 30 35 40

Slide 15

Slide 15 text

Этапы сборки проекта

Slide 16

Slide 16 text

Установка зависимостей

Slide 17

Slide 17 text

Тестирование кода

Slide 18

Slide 18 text

Сборка артефактов

Slide 19

Slide 19 text

Упаковка в образ

Slide 20

Slide 20 text

D T A I

Slide 21

Slide 21 text

«Давайте сделаем что-то такое же, но другое».

Slide 22

Slide 22 text

D T A I

Slide 23

Slide 23 text

D T A I D T A I

Slide 24

Slide 24 text

D T A1 I D T A2 I

Slide 25

Slide 25 text

install dependencies unit testing build artifacts docker build

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

dependencies.Dockerfile FROM node:stable WORKDIR application COPY package.json package-lock.json ./ RUN npm install docker build -f dependecies.Dockerfile -t dependencies:${env} . docker push dependencies:${env}

Slide 28

Slide 28 text

sources.Dockerfile ARG dependencies_image FROM $dependencies_image WORKDIR application COPY src ./ RUN npm run tests docker build -f sources.Dockerfile -t sources:${env} . —build-arg dependencies_image=dependencies:${env} docker push sources:${env}

Slide 29

Slide 29 text

application.Dockerfile ARG sources_image ARG app ARG env FROM $sources_image as sources WORKDIR application RUN npm run build:$app:$env FROM nginx:stable COPY —from=sources dist/$app /artifacts

Slide 30

Slide 30 text

application.Dockerfile docker build -f application.Dockerfile -t app1:${env} . —build-arg app=app1 —build-arg env=prod —build-arg sources- image=sources:prod docker push app1:prod

Slide 31

Slide 31 text

10 коммитов, 35 минут сборки, 2 часа ожидания 13 22 34 52 80 123 179 0 45 90 135 180 225 10 15 20 25 30 35 40

Slide 32

Slide 32 text

10 коммитов, 15 минут сборки, 22 минуты ожидания 13 22 34 52 80 123 179 0 45 90 135 180 225 10 15 20 25 30 35 40

Slide 33

Slide 33 text

Итог 0 35 70 105 140 Время сборки 50% Время ожидания х5

Slide 34

Slide 34 text

Всем спасибо Следите за временем сборки pasynkov [email protected]