Как стать автором
Обновить

Комментарии 12

Спасибо за статью. У меня есть пара вопросов, если можно.
1 А чем такой подход выигрывает у того, когда можно собрать jar через gradle плагин application и просто положить его в образ?
2 Касательно этого:
Это однозначный плюс для безопасности, так как структура каждого образа известна и исключается попадание на прод «левых» библиотек.
Мне кажется, что использование образов докера само по себе реализует этот эффект — «исключается попадание на прод «левых» библиотек», т.е. на прод пойдет то, что «разработчик» собрал.

Главное преимущество показано на картинке в статье. Образ разбивается на легко кэшируемые слои. Похоже на автоматизацию вот этого https://spring.io/guides/gs/spring-boot-Docker/ (ближе к концу статьи)

Спасибо! На мой взгляд, это дает преимущество при работе с большим количеством сервисов — все образы собираются в одинаковой «манере».
Рекомендую посмотреть эту презентацию — youtu.be/SK6e_ZatOaw

они и так буду собираться в одинаковой манере. Более того — сборка "не через Spring Boot" даст больше универсальности, когда у вас сервисы не только на Spring Boot сделаны

Я правильно понимаю, что вместо 2-3 слоёв (base image, runtime layer, app layer) у нас получается 4 слоя, где 3 и 4 буду относительно часто "меняться".
3 слой меняется от сервиса к сервису.
4 слой меняется от версии к версии сервиса

Более того, эти 4 слоя обновляются независимо. Можно поменять слой ОС, а остальные слои будут не затронуты. В случае с Dockerfile были бы пересобраны все слои образа.

В случае с Dockerfile были бы пересобраны все слои образа.

вот это новость

А что не так? Я вот для эксперимента попробовал собрать https://github.com/docker/labs/blob/master/beginner/flask-app/Dockerfile
А потом поменял версию alpine. Пошла полная пересборка образа.
docker image history показал разные слои.


А buildpacks собирает и кэширует слои отдельно, а потом собирает в большой образ (если на пальцах).


Или я чего-то не понимаю, или одно из двух.

попробуйте поменять в buildpacks базовый образ — тоже слои пересобираться не будут?
или слои в buildpacks это не слои в Docker? и тогда мы про разное говорим...

Вот картинка с более развёрнутым описанием https://youtu.be/SK6e_ZatOaw?t=639
А далее примеры с заменой рантайма.
А вот описание концепции rebase https://buildpacks.io/docs/concepts/operations/rebase/


Мы говорим об одном и том же. О docker. Только Dockerfile при изменениях даже не пытается анализировать характер изменений и тупо пересоздаёт. А buildpaсks имеет набор инструкций о переиспользовании слоев. Вот и вся разница.

Спасибо, глянул. классная штука

Спасибо за статью. Буду пробовать/внедрять у себя :)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации