Java
DevOps
Comments 5
0
Скажите, а по какой причине во втором FROM вы использовали jdk образ? Я думаю, если мы заботимся о весе конечного образа, можно обойтись и jre образом.
0

Основная причина — преемственность статьи из спрингового блога. Я специально не трогал базовый образ, чтобы не вводить новых сущностей.
В целом вопрос выбора базового образа вопрос отдельный, но статья больше про оптимизацию разницы между образами, как вы можете видеть из графика в последнем разделе — какой бы базовый образ не был, мы получаем очень мелкие диффы. Это конечно не отменяет необходимость первичной загрузки на сервера, но при условии что прилаг много и все они шарят базовый образ его загрузка будет выполнена один раз.

+1
Насчет разных контрольных сумм, возможно вам поможет сброс дат для файлов входящих в слой. Т.е. проставлять 1970-01-01 для всех jar'ов

Если вы используете Gradle или Maven, как альтернативу можно использовать jib плагин (https://github.com/GoogleContainerTools/jib), он упаковывает приложения по слоями как у вас описано
0

Когда изучали проблему невоспроизводимости на билд агентах, эта версия рассматривалась и даже некоторое время после исправления настоящей проблемы использовали строчку find . -exec touch -t 200001010101 {} \; на распакованных файлах, но позже выяснили что она ничего не улучшает (по крайней мере на тех сценариях что у нас есть).
Jib наверное стоит действительно посмотреть, выглядит интересно. Спасибо за наводку.

0
Целью оптимизации является сокращение разницы между получаемыми образами от сборки к сборке

Дело как раз в дополнительных модулях: они являются источниками постоянных изменений для слоя, даже если вы не вносите в код модуля никаких правок

На правах рекламы: попробуйте сборку werf-ом (https://github.com/flant/werf), в ней можно указать зависимость сборки от изменений в файлах в git. Поменялись исходники модуля — будет собираться, не поменялись, возьмётся из кэша. Была статья про сборку именно Java приложений https://habr.com/ru/company/flant/blog/348436/. Это ещё старая версия программы (dapp), но идеи почерпнуть можно.

Only those users with full accounts are able to leave comments. , please.