Есть образ приложения, который после билда весит 1.65 гигабайта, для ускорения сборки для него качается кэш предыдущего коммита, а затем после сборки идет загрузка образа с билдера в реджистри. Это занимает какое-то катастрофическое количество времени(в среднем по 20 минут). Какие есть способы ускорить этот процесс? Если в локальный нексус добавить базовый докер образ со всеми зависимостями, то это уменьшит вес, который билдер будет отправлять в реджистри, так как слой уже существует там, или никак не повлияет на размер сбилженного образа, который нужно отправить? Возможно напутал с терминами или процессом, являются разработчиком, а не девопсом(
пристрелить разрабов за сжатый образ в 1,65 гига
Да, по поводу веса последнего слоя — там где-то пара килобайт, так как там просто COPY . /code/
Ты б докерфайл показал чтоли
Ну у меня есть предположение, что кеш какой-то левый приезжает, а не последнего коммита, но девопсы говорят что все ок должно быть
вангую у вас на билдере нет кеша регистри Из-за чего хэши при том же apt-get update меняться могут
К сожалению, я не так глубоко пока что в магию девопсинга погрузился и не совсем понимаю что это значит( Можешь для крестьян объяснить?
тот же pytorch в таре весит 250 метров. Распакованный может и под гиг занимать
а где именно собирается этот образ? у сборочной ноды // ранера локальный кеш для слоев настроен7
Нет, там вот такое в ci файле в before_script docker image pull "$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG:$CI_COMMIT_BEFORE_SHA" || true и такое в script docker build --cache-from "$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG:$CI_COMMIT_BEFORE_SHA"
--cache-from должен помочь, да
получается, локального кеша нет, это печально, но жить можно ну, тут два пути: 1. настроить локальный кеш для слоев этого можно достичь через выделенные раннеры для сборки образов, которые будут жить на своих ВМ // кубернодах, и в которых будет проброшен каталог с хоста для хранения слоев в случае кубера можно и через pvc этого же добиться, но тут смотреть надо 1.5 поменять реджистри я предполагаю, вы используете реджистри самого гитлаба, которое в случае публичного gitlab.com инстанса не шибко быстрое попробуйте хранить образы приложений непосредственно в нексусе, и кеши слоев держать там же если нексус локальный, находится в одной сети и его есть кому админить, можно получить заметное ускорение втягивания кешей в чистный раннер и пуша конечных образов 2. сокращать объем образа как минимум, можно попробовать выкосить поетри из конечного образа, кеши и метаданные апта
Принял инфу, спасибо!
Обсуждают сегодня