Docker многоэтапные сборки могут помочь уменьшить размер конечного изображения, но не уменьшат время вашей сборки.
Что сокращает время созданияСборка заключается в том, чтобы понять, как работает кэш сборки Docker.Прочитайте Использование кэша сборки из Docker Рекомендации по написанию документации Dockerfiles .
Я не знаком с Ruby, но мне кажется, что Gemfile
полезно только для команды bundle install
и игнорируется для команд gem install
.Если это так, вам лучше переместить линию COPY Gemfile ./
, чтобы она отображалась прямо перед RUN bundle install --binstubs
.Причина в том, что каждый раз, когда изменяется ваш Gemfile, сборка докера распознает ситуацию и делает недействительным любой слой, следуя этой инструкции из кэша сборки.
Теперь все, что я говорил ранее, действительнодо тех пор, пока вы запускаете последовательные сборки на одной и той же машине.
Поскольку вы используете Google Cloud Build, вы будете запускать каждую сборку каждый раз в новой чистой среде и, следовательно, не будете иметь промежуточные слои докера в кэше ... если вы не сконфигурируете Google Cloud Build для сохраненияи восстановите ваш кеш.
Из Google Cloud Build Лучшие практики для ускорения сборки документации вы найдете инструкции о том, как включить кэш Kaniko , который позаботитсясохранить эти докеры построить промежуточные слои.