Csökkentse a dokkoló kép méretét a tavaszi indító alkalmazással
Ievgen Degtiarenko
2019. június 30. · 4 perc olvasás
Nemrég volt egy feladatom dokkolni és futtatni a k8s egyszerű tavaszi boot 2 alkalmazásban. Ez nem valami új, és a Google-ben nagyon sok példát találhat erre. Meglepődtem, hogy nem találtam modern alpesi jdk11 képet az openjdk adattárban. Arra számítottam, hogy a slim elég kicsi lesz, de kiderült, hogy 422 MB. Ez a bejegyzés megosztja tapasztalataimat a java 11-en futó tavaszi boot 2 képméretének csökkentéséről 144 MB-ra.
Alkalmazás
Mint már említettem, a 2. tavaszi bootot használom, amely egy REST API a relációs adatbázis felett (a @RepositoryRestResource használatával).
A következő függőségeim vannak:
Az üveg mérete 37,6 mb.
A dokkoló felépítése után 422 MB méretű képet kapok a dokkoló képek szerint Kimenet. Nagyon érdekes, hogy 8-jdk-slim eredményt használva 306 MB-os képben.
1. kísérlet: újabb képek
A csökkentés első logikus lépése az alternatív kép megtalálása lenne (lehetőleg alpesi alapon).
Ellenőriztem a következő java tárolókat
(11 jelenlegi LTS kiadásként és 8, mivel még mindig van elég régi alkalmazás, amelyet nem lehet frissíteni)
A táblázatot képekkel, címkékkel és méretükkel (a cikk írásának pillanatában) itt találja.
Ez egy rövid minta:
Ezen eredmények szerint átállhatunk az adoptopenjdk/openjdk11: alpine-jre-re. Ez csak 177 MB képet eredményez.
2. kísérlet: egyéni futásidő
A jdk9 és a modularizációs szolgáltatás óta megpróbálhatjuk saját futásidejüket felépíteni, csak az alkalmazáshoz szükséges modulokkal.
Ezt a funkciót itt dokumentálják.
Próbáljuk meg megtalálni a tavaszi boot 2 alkalmazáshoz szükséges modulokat:
Oké, úgy tűnik, hogy a jdeps nem tudta kezelni a fat-jar-ot, csomagoljuk ki és adjuk meg az classpath-t:
Megpróbáltam a jdk12-t beszerezni ezeket az információkat, de még egy problémával szembesültem:
A ClassNotFoundException által a próba, a hiba és a keresés modul használatával azt tapasztaltam, hogy a következő modulokra van szükség a futtatáshoz:
- java.base
- java.logging
- java.sql
- java.nevezés
- java.kezelés
- java.eszköz
- java.desktop
- java.security.jgss
Egyéni futásidejű végrehajtás létrehozása:
Csomagolja ezt a Dockerfile fájlba:
Az eredmény dokkoló képe (alkalmazás nélkül) mindössze 106 MB, ami csendes kicsi, összehasonlítva a többi rendelkezésre álló lehetőséggel. Az alkalmazással történő használat után 144 MB-ra nő.
Címkézhetnénk úgy, hogy "spring-boot-runtime: openjdk-11-slim", és alapdocker képként használhatnánk az összes tavaszi boot-alkalmazást, ha mindegyiknek hasonló a függősége. Ha ez nem igaz, akkor minden alkalmazást dokkolhatunk többlépcsős összeállítással (1. lépés: egyéni futásidejű, 2. lépés: jar hozzáadása).
Következtetés
Jelenleg az alapértelmezett java dokkoló képek nagy méretűek.
Ez könnyen megváltoztatható csak jre-vel ellátott címkék használatával, vagy egyedi java futásidejű képek készítésével.
- Stella Trim - Csökkentse a hasi extra zsírtartalmat a stellatrim Medium segítségével
- Szimvasztatin alkalmazási útmutató, ár, orvosok válaszai
- Hirtelen Elena borcseva kipróbálta a csábító képét; Hírességek Hírek
- A gyors fogyás előnyei és hátrányai, Chana Davis, PhD Medium
- ProVen ÉS HÁROM EGYÉB SÚLYFOGÁS-KIEGÉSZÍTŐ ÁTTEKINTÉS 2020 a preshyB Medium