172 похожих чатов

Привет. Подскажите, используете ли вы кеширование при сборке образов?

23 ответов

13 просмотров

Все, кто пользуются докером в той или иной степени используют кэширование при сборке образов. В чём суть вопроса?

Dmitry- Автор вопроса
Georgy Borodin
Все, кто пользуются докером в той или иной степени...

Я общаюсь с девопсом в своей команде. У нас проект на Node, подготовка образа включает установку зависимостей и билд проекта. Я предлагаю разделить этапы установки зависимостей и этап сборки проекта, потому что зависимости устанавливаются в несколько раз дольше, чем выполняется сборка. Зависимости меняются редко, поэтому я вижу смысл в том, чтобы кешировать этап установки зависимостей. Девопс смеётся и говорит, что это всё ерунда

Dmitry
Я общаюсь с девопсом в своей команде. У нас проект...

Докер-образы собираются из инструкций в докерфайле по порядку. Результат выполнения почти каждой команды (слой) кэшируется. И лежит себе, пока его не потрут

Какое конкретно? Дефолтное само используется обычно, новые фичи билд кита надо настраивать

Dmitry
Я общаюсь с девопсом в своей команде. У нас проект...

Это вроде как рекомендуемм способ для ноды, вернее для npm/yarn

Dmitry- Автор вопроса
Vladimir Chernyshev
Какое конкретно? Дефолтное само используется обычн...

Кеширование слоёв. Популярная ли это практика среди девопсов в проектах? Целесообразно ли его отключать?

Dmitry
Кеширование слоёв. Популярная ли это практика сред...

Не целесообразно. Он очень хорошо работает. Целесообразно даже пуллить предыдущий билд на чистую ноду

Dmitry- Автор вопроса
Georgy Borodin
А как девопс-то этот проект собирает?

sudo docker build --pull \ --no-cache \ --build-arg SSH_KEY="\$key" \ --build-arg IMAGE_TAG=$KEBAB_BRANCH \ -t \${full_tag_name} \ -f deploy/Dockerfile .

Dmitry
sudo docker build --pull \...

Ну вот пусть no-cache уберёт. Докер без лишней помощи может проверить изменения в окружении для сборки. Ну и SSH ключ запекать в сборку – вообще не очень

Да, где-то пушим в реджистри как слои, конкретно за node_modules - пушим кеш в s3.

Dmitry
Спасибо

А вообще есть несколько вещей тут потенциально нехороших: ––pull – сдёргивать всегда свежую версию контейнера (FROM node:latest условный может быть написан, и всё похерит). Девопсу, наверное, лучше пинить версии, в особенности, если это продакшен --no-cache вместе c --build-arg SSH_KEY кстати имеет смысл: можно терморектально отгородиться от утечки данных в кэш (он собирает с грязным трюком, но приложил подорожник, вот и никакого вам кэша)

Dmitry- Автор вопроса
Georgy Borodin
Докер-образы собираются из инструкций в докерфайле...

Не подскажешь, как правильно чистить кеш? Так, чтобы удалялись только старые полные образы, но не промежуточные слои с зависимостями, которые давно не обновлялись, но всё ещё актуальны?

Dmitry
Не подскажешь, как правильно чистить кеш? Так, что...

Если собираете с --no-cache (могу ошибаться), слоёв никаких и так нет

Georgy Borodin
Если собираете с --no-cache (могу ошибаться), слоё...

Игнорирует локальные промежуточные слои.

Devourer
Игнорирует локальные промежуточные слои.

А сам их пишет всё равно? Я вот не помню, а в доке очень кратко

Georgy Borodin
А сам их пишет всё равно? Я вот не помню, а в доке...

When the ‘–no-cache’ option is passed to ‘Docker build…’, then that build will always start from scratch, writing a new image to the file system even if nothing in the Dockerfile has changed. This is guaranteed to not reuse stale results, but will always take the maximum amount of time. Всё же пишет.

Dmitry
А если включим кеш?

Можно сделать несколько вещей: – Начать хранить сикреты безопасно (не билдить с ними) и наслаждаться кэшем докера – Если это удобно – собрать свой образ с зависимостями для основы, положить в свой реджистри и юзать его, обновляя централизованно. А везде, куда сикреты пихаете, поступать на свой страх и риск

Dmitry- Автор вопроса
Georgy Borodin
Можно сделать несколько вещей: – Начать хранить си...

SSH-ключ используется при сборке образа для копирования репозитория из Github. Для авторизации в Github нужны логин и пароль или SSH-ключ. Не подскажешь, как правильно нужно в таком случае поступать?

Dmitry
SSH-ключ используется при сборке образа для копиро...

https://medium.com/@tonistiigi/build-secrets-and-ssh-forwarding-in-docker-18-09-ae8161d066 А лучше всего пользоваться каким-то CI/CD, который централизованно всё скачает (или сам будет описан в репозитории проекта, как в GitLab)

Dmitry- Автор вопроса

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта