Size: a a a

2020 May 25

AG

Alexey Genus in pro.jvm
Кстати, к недавнему разговору о тонких docker-образах для spring boot. Нашёл гениальное в своей простоте решение у Дейва Саера: работает с любой версие spring boot, не требует никаких зависимостей
https://github.com/dsyer/kubernetes-intro/blob/master/Dockerfile

Я думал о нём раньше, но почему-то мне казалось, что здесь не будет работать кеширование. Оказалось, что несмотря на то, что кеш в build не работает, внутри второго образа всё будет ок, если библиотеки не менялись.
Короче, всё гениальное просто.
источник

D

Dima in pro.jvm
Alexey Genus
Кстати, к недавнему разговору о тонких docker-образах для spring boot. Нашёл гениальное в своей простоте решение у Дейва Саера: работает с любой версие spring boot, не требует никаких зависимостей
https://github.com/dsyer/kubernetes-intro/blob/master/Dockerfile

Я думал о нём раньше, но почему-то мне казалось, что здесь не будет работать кеширование. Оказалось, что несмотря на то, что кеш в build не работает, внутри второго образа всё будет ок, если библиотеки не менялись.
Короче, всё гениальное просто.
а в чем конкретно магия?
источник

AG

Alexey Genus in pro.jvm
Получается так, что в build кеш не работает, потому что jar всегда новый. Но, если все файлы в папке BOOT-INF/lib окажутся такими же, как и раньше, то слой в результирующем образе окажется таким же, как и был в прошлый раз при сборке. Таким образом он не будет запушен в registry: остаются только два тонких слоя с .class-файлами и ресурсами
источник

IZ

Ivan Zemlyankiy in pro.jvm
Alexey Genus
Получается так, что в build кеш не работает, потому что jar всегда новый. Но, если все файлы в папке BOOT-INF/lib окажутся такими же, как и раньше, то слой в результирующем образе окажется таким же, как и был в прошлый раз при сборке. Таким образом он не будет запушен в registry: остаются только два тонких слоя с .class-файлами и ресурсами
Т.е. По факту он создаст 3 слоя, но поскольку хеш-суммы совпадут, то ничего не деплоим, так что-ли?
источник

AG

Alexey Genus in pro.jvm
Всё так, деплоим только один последний или последних два, если меняются ресурсы
источник

IZ

Ivan Zemlyankiy in pro.jvm
Alexey Genus
Кстати, к недавнему разговору о тонких docker-образах для spring boot. Нашёл гениальное в своей простоте решение у Дейва Саера: работает с любой версие spring boot, не требует никаких зависимостей
https://github.com/dsyer/kubernetes-intro/blob/master/Dockerfile

Я думал о нём раньше, но почему-то мне казалось, что здесь не будет работать кеширование. Оказалось, что несмотря на то, что кеш в build не работает, внутри второго образа всё будет ок, если библиотеки не менялись.
Короче, всё гениальное просто.
Я думаю это и не только с любым бутом работает, но и с любым приложением =)
источник

AG

Alexey Genus in pro.jvm
Ну да) Просто с бутом особенно актуально, особенно, когда микросервисы по 200 МБ в джарке😭
источник

KK

Kostya Kakunin in pro.jvm
привет всем, джавит. у меня задачи типа микро-НИОКР.
суть задачи : нужно сделать механизмы лицензирования по  модулям (например jar файлы под яву) для Entprise  решение на микросервисах Spring по OpenJDK (Java SDK). что бы за каждый модуль рубить баблос — типа если продавать авто — то колеса отдельно, двигатель тоже за дополнительную плату

требования:
1. просто на яве (минимум кодирования для этого на каждый модуль)
2. работа офф-лайн (без инета)
3. не зависимость от конкретной OC
4. отказоустойчивость от крякания

если оффлайн то все сломается  — в этом суть моей проблемы. все хорошие решения - онлайн сервер с лицензиями
можно как в КриптоПро, если знаете — но ее тоже ломают
там суть такая -  нужно ввести ключ лицензии (в нашем случае просто  высылаем набор jar файлов с ЭЦП внутри + файл лицензии Хэш+ служебная инфа)

я пример сделал, но он пока ломается
источник

AE

Alexandr Emelyanov in pro.jvm
Alexey Genus
Ну да) Просто с бутом особенно актуально, особенно, когда микросервисы по 200 МБ в джарке😭
Ну когда надо доставлять тарами в закрытый контур - это копейки, образ с jvm будет толще)
источник

AG

Alexey Genus in pro.jvm
😢
источник

AE

Alexandr Emelyanov in pro.jvm
Kostya Kakunin
привет всем, джавит. у меня задачи типа микро-НИОКР.
суть задачи : нужно сделать механизмы лицензирования по  модулям (например jar файлы под яву) для Entprise  решение на микросервисах Spring по OpenJDK (Java SDK). что бы за каждый модуль рубить баблос — типа если продавать авто — то колеса отдельно, двигатель тоже за дополнительную плату

требования:
1. просто на яве (минимум кодирования для этого на каждый модуль)
2. работа офф-лайн (без инета)
3. не зависимость от конкретной OC
4. отказоустойчивость от крякания

если оффлайн то все сломается  — в этом суть моей проблемы. все хорошие решения - онлайн сервер с лицензиями
можно как в КриптоПро, если знаете — но ее тоже ломают
там суть такая -  нужно ввести ключ лицензии (в нашем случае просто  высылаем набор jar файлов с ЭЦП внутри + файл лицензии Хэш+ служебная инфа)

я пример сделал, но он пока ломается
Все бесполезно)
источник

VP

Vladimir Petrakovich in pro.jvm
Alexey Genus
Получается так, что в build кеш не работает, потому что jar всегда новый. Но, если все файлы в папке BOOT-INF/lib окажутся такими же, как и раньше, то слой в результирующем образе окажется таким же, как и был в прошлый раз при сборке. Таким образом он не будет запушен в registry: остаются только два тонких слоя с .class-файлами и ресурсами
Осталось понять, зачем паковать spring boot jar, а потом распаковывать его.
С тем же успехом можно было бы просто закинуть все либы (включая снепшоты и часто изменяемые модули) из зависимостей в отдельный слой, а в другой закинуть jar приложения. Докерфайл и команда запуска будет даже проще, эффект тот же, ну и лишний архив делать не надо 🤷‍♂️
источник

VP

Vladimir Petrakovich in pro.jvm
Не знаю, как в мавене, а в Gradle это делается легко
источник

AG

Alexey Genus in pro.jvm
Да, это было просто, если бы spring boot gradle plugin так умел
источник

AG

Alexey Genus in pro.jvm
А он умеет?
источник

VP

Vladimir Petrakovich in pro.jvm
Alexey Genus
А он умеет?
Так он же теперь умеет ещё лучше)
А если уж расчехлять магию, то можно и без его участия
источник

D

Dima in pro.jvm
Vladimir Petrakovich
Осталось понять, зачем паковать spring boot jar, а потом распаковывать его.
С тем же успехом можно было бы просто закинуть все либы (включая снепшоты и часто изменяемые модули) из зависимостей в отдельный слой, а в другой закинуть jar приложения. Докерфайл и команда запуска будет даже проще, эффект тот же, ну и лишний архив делать не надо 🤷‍♂️
ну типо ты кидаешь джарку, внутри которой нужные тебе либы
источник

D

Dima in pro.jvm
дальше алгоритм как докер плагине
источник

D

Dima in pro.jvm
а если сразу кидать нужные тебе либы - это как сделать?
источник

D

Dima in pro.jvm
в таргет их как бы нет, они в local storage
источник