ã³ã³ããã¯ãã¢ããªã±ãŒã·ã§ã³ããã¹ãŠã®ãœãããŠã§ã¢ããã³ãªãã¬ãŒãã£ã³ã° ã·ã¹ãã ã®äŸåé¢ä¿ãšãšãã«ããã±ãŒãžåããããããããŸããŸãªç°å¢ã«é ä¿¡ããããã®æšå¥šãããæ段ãšãªã£ãŠããŸãã
ãã®èšäºã§ã¯ãSpring Boot ã¢ããªã±ãŒã·ã§ã³ãã³ã³ããåããããŸããŸãªæ¹æ³ã«ã€ããŠèª¬æããŸãã
- Docker ãã¡ã€ã«ã䜿çšã㊠Docker ã€ã¡ãŒãžãäœæãã
- Cloud-Native Buildpack ã䜿çšããŠãœãŒã¹ãã OCI ã€ã¡ãŒãžãäœæãã
- å€å±€ããŒã«ã䜿çšã㊠JAR ã®äžéšãç°ãªãå±€ã«åé¢ããããšã«ããå®è¡æã€ã¡ãŒãžã®æé©åã
ã³ãŒãäŸ
ãã®èšäºã«ã¯å®éã«åäœããã³ãŒãäŸãå«ãŸããŠããŸã
ã³ã³ããçšèª
ãã®èšäºã§äœ¿çšãããŠããã³ã³ããçšèªããå§ããŸãã
- ã³ã³ããã€ã¡ãŒãž: ç¹å®ã®åœ¢åŒã®ãã¡ã€ã«ã ãã«ã ããŒã«ãå®è¡ããŠãã¢ããªã±ãŒã·ã§ã³ãã³ã³ãã㌠ã€ã¡ãŒãžã«å€æããŸãã
- ã³ã³ãã: ã³ã³ãã ã€ã¡ãŒãžã®å®è¡å¯èœã€ã³ã¹ã¿ã³ã¹ã
- ã³ã³ãããšã³ãžã³: ã³ã³ããã®å®è¡ãæ åœããããŒã¢ã³ ããã»ã¹ã
- ã³ã³ãããã¹ã: ã³ã³ãã㌠ãšã³ãžã³ãå®è¡ããããã¹ã ã³ã³ãã¥ãŒã¿ãŒã
- ã³ã³ããã¬ãžã¹ããª: ã³ã³ãã㌠ã€ã¡ãŒãžã®å ¬éããã³é åžã«äœ¿çšãããäžè¬çãªå Žæã
- OCIèŠæ Œ:
Open Container InitiativeïŒOCIïŒ ã¯ãLinux Foundation å ã«åœ¢æããã軜éã§ãªãŒãã³ãªã¬ããã³ã¹æ§é ã§ãã OCI ã€ã¡ãŒãžä»æ§ã¯ããã¹ãŠã®ã³ã³ãã ãšã³ãžã³ããããããã«ã ããŒã«ã§äœæãããã³ã³ãã ã€ã¡ãŒãžãå®è¡ã§ããããã«ããããã«ãã³ã³ãã ã€ã¡ãŒãžãšã©ã³ã¿ã€ã 圢åŒã®æ¥çæšæºãå®çŸ©ããŸãã
ã¢ããªã±ãŒã·ã§ã³ãã³ã³ããåããã«ã¯ãã¢ããªã±ãŒã·ã§ã³ãã³ã³ãã ã€ã¡ãŒãžã§ã©ãããããã®ã€ã¡ãŒãžãå ±æã¬ãžã¹ããªã«å ¬éããŸãã ã³ã³ãã㌠ã©ã³ã¿ã€ã ã¯ããã®ã€ã¡ãŒãžãã¬ãžã¹ããªããååŸããŠè§£åãããã®äžã§ã¢ããªã±ãŒã·ã§ã³ãå®è¡ããŸãã
Spring Boot ããŒãžã§ã³ 2.3 ã¯ãOCI ã€ã¡ãŒãžãäœæããããã®ãã©ã°ã€ã³ãæäŸããŸãã
åŸæ¥ã®æ¹æ³ã§ã³ã³ãã ã€ã¡ãŒãžãæ§ç¯ãã
Spring Boot ã¢ããªã±ãŒã·ã§ã³çšã® Docker ã€ã¡ãŒãžã®äœæã¯ãDocker ãã¡ã€ã«ã«ããã€ãã®åœä»€ãè¿œå ããã ãã§éåžžã«ç°¡åã§ãã
ãŸãå®è¡å¯èœ JAR ãã¡ã€ã«ãäœæããDocker ãã¡ã€ã«ã®æ瀺ã®äžéšãšããŠãå¿ èŠãªèšå®ãé©çšããåŸããã®å®è¡å¯èœ JAR ãã¡ã€ã«ãããŒã¹ JRE ã€ã¡ãŒãžã®äžã«ã³ããŒããŸãã
Spring ã¢ããªã±ãŒã·ã§ã³ãäœæããŸããã web
, lombok
О actuator
ã API ãæäŸããããã®ã¬ã¹ã ã³ã³ãããŒã©ãŒãè¿œå ããŠããŸãã GET
æ¹æ³ã
Dockerfileã®äœæ
次ã«ãè¿œå ããããšã§ãã®ã¢ããªã±ãŒã·ã§ã³ãã³ã³ããåããŸãã Dockerfile
:
FROM adoptopenjdk:11-jre-hotspot
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} application.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/application.jar"]
Docker ãã¡ã€ã«ã«ã¯ã次ã®åºæ¬ã€ã¡ãŒãžãå«ãŸããŠããŸãã adoptopenjdk
ããã®äžã« JAR ãã¡ã€ã«ãã³ããŒããããŒããéããŸãã 8080
ãªã¯ãšã¹ãããªãã¹ã³ããŸãã
ã¢ããªã±ãŒã·ã§ã³ã®æ§ç¯
ãŸããMaven ãŸã㯠Gradle ã䜿çšããŠã¢ããªã±ãŒã·ã§ã³ãäœæããå¿ èŠããããŸãã ããã§ã¯ Maven ã䜿çšããŸãã
mvn clean package
ããã«ãããã¢ããªã±ãŒã·ã§ã³ã®å®è¡å¯èœ JAR ãã¡ã€ã«ãäœæãããŸãã ãã®å®è¡å¯èœ JAR ã Docker ãšã³ãžã³ã§å®è¡ã§ããããã« Docker ã€ã¡ãŒãžã«å€æããå¿ èŠããããŸãã
ã³ã³ããã€ã¡ãŒãžã®äœæ
次ã«ã次ã®ã³ãã³ããå®è¡ããŠããã®å®è¡å¯èœ JAR ãã¡ã€ã«ã Docker ã€ã¡ãŒãžã«é
眮ããŸãã docker build
åã«äœæãã Dockerfile ãå«ããããžã§ã¯ãã®ã«ãŒã ãã£ã¬ã¯ããªãã:
docker build -t usersignup:v1 .
次ã®ã³ãã³ãã䜿çšããŠããªã¹ãå ã®ã€ã¡ãŒãžã確èªã§ããŸãã
docker images
äžèšã®ã³ãã³ãã®åºåã«ã¯ç»åãå«ãŸããŠããŸã usersignup
ããŒã¹ç»åãšäžç·ã«ã adoptopenjdk
Docker ãã¡ã€ã«ã§æå®ãããŠããŸãã
REPOSITORY TAG SIZE
usersignup v1 249MB
adoptopenjdk 11-jre-hotspot 229MB
ã³ã³ããã€ã¡ãŒãžå ã®ã¬ã€ã€ãŒã衚瀺ãã
ç»åå
ã®ã¬ã€ã€ãŒã®ã¹ã¿ãã¯ãèŠãŠã¿ãŸãããã æã
ã¯äœ¿çšããã ãã
dive usersignup:v1
以äžã¯ãDive ã³ãã³ãããã®åºåã®äžéšã§ãã
èŠãŠãããããã«ãã¢ããªã±ãŒã·ã§ã³å±€ãã€ã¡ãŒãž ãµã€ãºã®ããªãã®éšåãå ããŠããŸãã æé©åã®äžç°ãšããŠã次ã®ã»ã¯ã·ã§ã³ã§ãã®å±€ã®ãµã€ãºãåæžããããšæããŸãã
Buildpackã䜿çšããã³ã³ããã€ã¡ãŒãžã®äœæ
ã¯ã©ãŠããã«ãããã±ãŒãžã®å©ç¹
Buildpack ã䜿çšããŠã€ã¡ãŒãžãäœæããäž»ãªå©ç¹ã® XNUMX ã€ã¯æ¬¡ã®ãšããã§ãã ã€ã¡ãŒãžæ§æã®å€æŽã¯éäžç®¡ç (ãã«ããŒ) ã§ãããã«ããŒã䜿çšããŠãã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã«äŒéã§ããŸãã
ãã«ã ããã±ãŒãžã¯ãã©ãããã©ãŒã ãšå¯æ¥ã«çµåãããŠããŸããã ã¯ã©ãŠããã€ãã£ã ãã«ãããã¯ã¯ãOCI ã€ã¡ãŒãžåœ¢åŒããµããŒãããããšã§ãã©ãããã©ãŒã éã®æšæºåãå®çŸããDocker ãšã³ãžã³ã§ã€ã¡ãŒãžãå®è¡ã§ããããã«ããŸãã
Spring Boot ãã©ã°ã€ã³ã®äœ¿çš
Spring Boot ãã©ã°ã€ã³ã¯ãBuildpack ã䜿çšããŠãœãŒã¹ãã OCI ã€ã¡ãŒãžããã«ãããŸãã ç»åã¯ä»¥äžã䜿çšããŠäœæãããŸã bootBuildImage
ã¿ã¹ã¯ (Gradle) ãŸã㯠spring-boot:build-image
ã¿ãŒã²ãã (Maven) ãšããŒã«ã«ã® Docker ã€ã³ã¹ããŒã«ã
Docker ã¬ãžã¹ããªã«ããã·ã¥ããããã«å¿
èŠãªã€ã¡ãŒãžã®ååãã«ã¹ã¿ãã€ãºããã«ã¯ã次ã®ååãæå®ããŸãã image tag
:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<image>
<name>docker.io/pratikdas/${project.artifactId}:v1</name>
</image>
</configuration>
</plugin>
Mavenã䜿ã£ãŠãã£ãŠã¿ãŸããã build-image
ã¢ããªã±ãŒã·ã§ã³ã®äœæãšã³ã³ãã㌠ã€ã¡ãŒãžã®äœæã®ç®æšã çŸæç¹ã§ã¯ Dockerfile ã¯äœ¿çšããŠããŸããã
mvn spring-boot:build-image
çµæã¯æ¬¡ã®ããã«ãªããŸãã
[INFO] --- spring-boot-maven-plugin:2.3.3.RELEASE:build-image (default-cli) @ usersignup ---
[INFO] Building image 'docker.io/pratikdas/usersignup:v1'
[INFO]
[INFO] > Pulling builder image 'gcr.io/paketo-buildpacks/builder:base-platform-api-0.3' 0%
.
.
.. [creator] Adding label 'org.springframework.boot.version'
.. [creator] *** Images (c311fe74ec73):
.. [creator] docker.io/pratikdas/usersignup:v1
[INFO]
[INFO] Successfully built image 'docker.io/pratikdas/usersignup:v1'
åºåãããããã®ã¯ã paketo Cloud-Native buildpack
åäœãã OCI ã€ã¡ãŒãžãäœæããããã«äœ¿çšãããŸãã åãšåæ§ã«ã次ã®ã³ãã³ããå®è¡ãããšãã€ã¡ãŒãžã Docker ã€ã¡ãŒãžãšããŠãªã¹ããããŠããããšãããããŸãã
docker images
çµè«ïŒ
REPOSITORY SIZE
paketobuildpacks/run 84.3MB
gcr.io/paketo-buildpacks/builder 652MB
pratikdas/usersignup 257MB
Jibã䜿çšããã³ã³ããã€ã¡ãŒãžã®äœæ
Jib ã¯ããœãŒã¹ ã³ãŒãããã³ã³ãã ã€ã¡ãŒãžãäœæããããã®ä»£æ¿æ¹æ³ãæäŸãããGoogle ã®ã€ã¡ãŒãžäœæãã©ã°ã€ã³ã§ãã
ã«ã¹ã¿ãã€ãºãã jib-maven-plugin
pom.xml å
:
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>2.5.2</version>
</plugin>
次ã«ãMaven ã³ãã³ãã䜿çšã㊠Jib ãã©ã°ã€ã³ãå®è¡ããã¢ããªã±ãŒã·ã§ã³ããã«ãããã³ã³ãã㌠ã€ã¡ãŒãžãäœæããŸãã åãšåæ§ãããã§ã¯ Docker ãã¡ã€ã«ã䜿çšããŸããã
mvn compile jib:build -Dimage=<docker registry name>/usersignup:v1
äžèšã® Maven ã³ãã³ããå®è¡ãããšã次ã®åºåãåŸãããŸãã
[INFO] Containerizing application to pratikdas/usersignup:v1...
.
.
[INFO] Container entrypoint set to [java, -cp, /app/resources:/app/classes:/app/libs/*, io.pratik.users.UsersignupApplication]
[INFO]
[INFO] Built and pushed image as pratikdas/usersignup:v1
[INFO] Executing tasks:
[INFO] [==============================] 100.0% complete
åºåã«ã¯ãã³ã³ãã㌠ã€ã¡ãŒãžãäœæãããã¬ãžã¹ããªã«é 眮ãããããšã瀺ãããŸãã
æé©åãããç»åãäœæããåæ©ãšãã¯ããã¯
æé©åãè¡ãäž»ãªçç±ã¯ XNUMX ã€ãããŸãã
- ÐÑПОзвПЎОÑелÑМПÑÑÑ: ã³ã³ãã ãªãŒã±ã¹ãã¬ãŒã·ã§ã³ ã·ã¹ãã ã§ã¯ãã³ã³ãã ã€ã¡ãŒãžãã€ã¡ãŒãž ã¬ãžã¹ããªããã³ã³ãã ãšã³ãžã³ãå®è¡ããŠãããã¹ãã«ååŸãããŸãã ãã®ããã»ã¹ã¯èšç»ãšåŒã°ããŸãã ã¬ãžã¹ããªãã倧ããªã€ã¡ãŒãžãååŸãããšãã³ã³ãã ãªãŒã±ã¹ãã¬ãŒã·ã§ã³ ã·ã¹ãã ã§ã¯ã¹ã±ãžã¥ãŒã«æéãé·ããªããCI ãã€ãã©ã€ã³ã§ã¯ãã«ãæéãé·ããªããŸãã
- ã»ãã¥ãªãã£: ã€ã¡ãŒãžã倧ããã»ã©ãè匱æ§ãååšããé åã倧ãããªããŸãã
Docker ã€ã¡ãŒãžã¯ã¬ã€ã€ãŒã®ã¹ã¿ãã¯ã§æ§æãããŠãããåã¬ã€ã€ãŒã¯ Dockerfile å ã®åœä»€ãè¡šããŸãã åã¬ã€ã€ãŒã¯ãåºç€ãšãªãã¬ã€ã€ãŒã®å€æŽã®ãã«ã¿ãè¡šããŸãã ã¬ãžã¹ããªãã Docker ã€ã¡ãŒãžããã«ãããšãã¬ã€ã€ãŒããšã«ãã«ããããã¹ãäžã«ãã£ãã·ã¥ãããŸãã
Spring Boot ã䜿çšãããã®
æé©åã®å ¬åŒã¯ãã¢ããªã±ãŒã·ã§ã³ã Spring Framework ã®äŸåé¢ä¿ããå¥ã®ã¬ãã«ã§åé¢ããããšã«éç¹ã眮ããŠããŸãã
åã JAR ãã¡ã€ã«ã®å€§éšåã圢æããäŸåé¢ä¿ã¬ã€ã€ãŒã¯ãäžåºŠã ãããŠã³ããŒãããããã¹ã ã·ã¹ãã ã«ãã£ãã·ã¥ãããŸãã
ã¢ããªã±ãŒã·ã§ã³ã®æŽæ°ããã³ã³ã³ãããŒã®ã¹ã±ãžã¥ãŒãªã³ã°äžã«ãã¢ããªã±ãŒã·ã§ã³ã®èãå±€ã®ã¿ããã«ãããŸãã ãã®å³ã«ç€ºãããã«:
次ã®ã»ã¯ã·ã§ã³ã§ã¯ãSpring Boot ã¢ããªã±ãŒã·ã§ã³çšã«ãããã®æé©åãããã€ã¡ãŒãžãäœæããæ¹æ³ãèŠãŠãããŸãã
Buildpack ã䜿çšãã Spring Boot ã¢ããªã±ãŒã·ã§ã³çšã«æé©åãããã³ã³ãã㌠ã€ã¡ãŒãžã®äœæ
Spring Boot 2.3 ã¯ãåã JAR ãã¡ã€ã«ã®äžéšãåå¥ã®ã¬ã€ã€ãŒã«æœåºããããšã«ããéå±€åããµããŒãããŸãã éå±€åæ©èœã¯ããã©ã«ãã§ã¯ç¡å¹ã«ãªã£ãŠãããSpring Boot Maven ãã©ã°ã€ã³ã䜿çšããŠæ瀺çã«æå¹ã«ããå¿ èŠããããŸãã
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<layers>
<enabled>true</enabled>
</layers>
</configuration>
</plugin>
ãã®æ§æã䜿çšããŠãæåã« Buildpack ã䜿çšããŠã次㫠Docker ã䜿çšããŠã³ã³ãã㌠ã€ã¡ãŒãžããã«ãããŸãã以äžã®ã»ã¯ã·ã§ã³ã§èª¬æããŸãã
èµ·åããŸããã build-image
ã³ã³ãã㌠ã€ã¡ãŒãžãäœæããããã® Maven ã¿ãŒã²ãã:
mvn spring-boot:build-image
Dive ãå®è¡ããŠçµæã®ã€ã¡ãŒãžå ã®ã¬ã€ã€ãŒã確èªãããšãã¢ããªã±ãŒã·ã§ã³ ã¬ã€ã€ãŒ (èµ€ã§å²ãŸããéšå) ããã·ã㯠JAR 圢åŒã䜿çšããŠååŸãããã®ãšæ¯èŒããŠãããã€ãåäœã§ã¯ããã«å°ããããšãããããŸãã
Docker ã䜿çšãã Spring Boot ã¢ããªã±ãŒã·ã§ã³çšã«æé©åãããã³ã³ãã㌠ã€ã¡ãŒãžã®äœæ
Maven ãŸã㯠Gradle ãã©ã°ã€ã³ã䜿çšãã代ããã«ãDocker ãã¡ã€ã«ã䜿çšããŠéå±€åããã Docker JAR ã€ã¡ãŒãžãäœæããããšãã§ããŸãã
Docker ã䜿çšããå Žåãã¬ã€ã€ãŒãæœåºããŠæçµã€ã¡ãŒãžã«ã³ããŒããããã« XNUMX ã€ã®è¿œå æé ãå®è¡ããå¿ èŠããããŸãã
éå±€åãæå¹ã«ã㊠Maven ã䜿çšããŠãã«ãããåŸã«çæããã JAR ã®å 容ã¯æ¬¡ã®ããã«ãªããŸãã
META-INF/
.
BOOT-INF/lib/
.
BOOT-INF/lib/spring-boot-jarmode-layertools-2.3.3.RELEASE.jar
BOOT-INF/classpath.idx
BOOT-INF/layers.idx
åºåã«ã¯ããšããååã®è¿œå ã® JAR ã衚瀺ãããŸãã spring-boot-jarmode-layertools
О layersfle.idx
ãã¡ã€ã«ã ãã®è¿œå ã® JAR ãã¡ã€ã«ã¯ã次ã®ã»ã¯ã·ã§ã³ã§èª¬æããããã«ãéå±€åãããåŠçæ©èœãæäŸããŸãã
åã ã®ã¬ã€ã€ãŒã®äŸåé¢ä¿ãæœåºãã
éå±€åããã JAR ããã¬ã€ã€ãŒã衚瀺ããã³æœåºããã«ã¯ãã·ã¹ãã ããããã£ã䜿çšããŸãã -Djarmode=layertools
ã¯ããã« spring-boot-jarmode-layertools
ã¢ããªã±ãŒã·ã§ã³ã®ä»£ããã« JAR:
java -Djarmode=layertools -jar target/usersignup-0.0.1-SNAPSHOT.jar
ãã®ã³ãã³ããå®è¡ãããšã䜿çšå¯èœãªã³ãã³ã ãªãã·ã§ã³ãå«ãåºåãçæãããŸãã
Usage:
java -Djarmode=layertools -jar usersignup-0.0.1-SNAPSHOT.jar
Available commands:
list List layers from the jar that can be extracted
extract Extracts layers from the jar for image creation
help Help about any command
åºåã«ã¯ã³ãã³ãã衚瀺ãããŸã list
, extract
О help
Ñ help
ããã©ã«ãã«ãªããŸãã ã§ã³ãã³ããå®è¡ããŸããã list
ãªãã·ã§ã³ïŒ
java -Djarmode=layertools -jar target/usersignup-0.0.1-SNAPSHOT.jar list
dependencies
spring-boot-loader
snapshot-dependencies
application
ã¬ã€ã€ãŒãšããŠè¿œå ã§ããäŸåé¢ä¿ã®ãªã¹ãã衚瀺ãããŸãã
ããã©ã«ãã®ã¬ã€ã€ãŒ:
ã¬ã€ã€ãŒå
ããŒãžå 容
dependencies
ããŒãžã§ã³ã« SNAPSHOT ãå«ãŸããŠããªãäŸåé¢ä¿
spring-boot-loader
JAR ããŒã㌠ã¯ã©ã¹
snapshot-dependencies
ããŒãžã§ã³ã« SNAPSHOT ãå«ãŸããäŸåé¢ä¿
application
ã¢ããªã±ãŒã·ã§ã³ã®ã¯ã©ã¹ãšãªãœãŒã¹
ã¬ã€ã€ãŒã¯æ¬¡ã®ããã«å®çŸ©ãããŸãã layers.idx
Docker ã€ã¡ãŒãžã«è¿œå ããå¿
èŠãããé åºã§ãã¡ã€ã«ãäœæããŸãã ãããã®ã¬ã€ã€ãŒã¯å€æŽãããªããããæåã®ååŸåŸã«ãã¹ãã«ãã£ãã·ã¥ãããŸãã æŽæ°ãããã¢ããªã±ãŒã·ã§ã³å±€ã®ã¿ããã¹ãã«ããŠã³ããŒãããããµã€ãºãåæžãããããé«éã«ãªããŸãã .
äŸåé¢ä¿ãåå¥ã®ã¬ã€ã€ãŒã«æœåºããŠã€ã¡ãŒãžãæ§ç¯ãã
ãšããã¡ãœããã䜿çšããŠãXNUMX 段éã§æçµã€ã¡ãŒãžãæ§ç¯ããŸãã
ãã«ãã¹ããŒãžãã«ãçšã« Dockerfile ãå€æŽããŸãããã
# the first stage of our build will extract the layers
FROM adoptopenjdk:14-jre-hotspot as builder
WORKDIR application
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} application.jar
RUN java -Djarmode=layertools -jar application.jar extract
# the second stage of our build will copy the extracted layers
FROM adoptopenjdk:14-jre-hotspot
WORKDIR application
COPY --from=builder application/dependencies/ ./
COPY --from=builder application/spring-boot-loader/ ./
COPY --from=builder application/snapshot-dependencies/ ./
COPY --from=builder application/application/ ./
ENTRYPOINT ["java", "org.springframework.boot.loader.JarLauncher"]
ãã®æ§æãå¥ã®ãã¡ã€ã«ã«ä¿åããŸãã Dockerfile2
.
次ã®ã³ãã³ãã䜿çšã㊠Docker ã€ã¡ãŒãžããã«ãããŸãã
docker build -f Dockerfile2 -t usersignup:v1 .
ãã®ã³ãã³ããå®è¡ãããšã次ã®åºåãåŸãããŸãã
Sending build context to Docker daemon 20.41MB
Step 1/12 : FROM adoptopenjdk:14-jre-hotspot as builder
14-jre-hotspot: Pulling from library/adoptopenjdk
.
.
Successfully built a9ebf6970841
Successfully tagged userssignup:v1
Docker ã€ã¡ãŒãžãã€ã¡ãŒãž ID ã䜿çšããŠäœæãããã¿ã°ä»ããããŠããããšãããããŸãã
æåŸã«ãåãšåãããã« Dive ã³ãã³ããå®è¡ããŠãçæããã Docker ã€ã¡ãŒãžå ã®ã¬ã€ã€ãŒãæ€æ»ããŸãã ç»å ID ãŸãã¯ã¿ã°ã Dive ã³ãã³ããžã®å ¥åãšããŠæå®ã§ããŸãã
dive userssignup:v1
åºåãããããããã«ãã¢ããªã±ãŒã·ã§ã³ãå«ãã¬ã€ã€ãŒã¯ããã 11 KB ã«ãªããäŸåé¢ä¿ã¯å¥ã®ã¬ã€ã€ãŒã«ãã£ãã·ã¥ãããŸãã
åã ã®ã¬ã€ã€ãŒã®å éšäŸåé¢ä¿ãæœåºãã
ã«ã¹ã¿ã äŸåé¢ä¿ãã¢ããªã±ãŒã·ã§ã³ãšäžç·ã«å®£èšããŠããã±ãŒãžåããã®ã§ã¯ãªããã«ã¹ã¿ã äŸåé¢ä¿ãå¥ã®å±€ã«æœåºããããšã§ãã¢ããªã±ãŒã·ã§ã³å±€ã®ãµã€ãºãããã«çž®å°ã§ããŸãã yml
åæ§ã®ååã®ãã¡ã€ã« layers.idx
:
- "dependencies":
- "BOOT-INF/lib/"
- "spring-boot-loader":
- "org/"
- "snapshot-dependencies":
- "custom-dependencies":
- "io/myorg/"
- "application":
- "BOOT-INF/classes/"
- "BOOT-INF/classpath.idx"
- "BOOT-INF/layers.idx"
- "META-INF/"
ãã®ãã¡ã€ã«ã®äžã§ layers.idx
ãšããååã®ã«ã¹ã¿ã äŸåé¢ä¿ãè¿œå ããŸããã io.myorg
å
±æãªããžããªããååŸããçµç¹ã®äŸåé¢ä¿ãå«ãŸããŠããŸãã
åºå
ãã®èšäºã§ã¯ãã¯ã©ãŠããã€ãã£ã ãã«ãããã¯ã䜿çšããŠãœãŒã¹ ã³ãŒãããã³ã³ãã ã€ã¡ãŒãžãçŽæ¥ãã«ãããæ¹æ³ã«ã€ããŠèª¬æããŸããã ããã¯ãDocker ã䜿çšããŠéåžžã®æ¹æ³ã§ã³ã³ãã ã€ã¡ãŒãžãäœæãã代ããã®æ¹æ³ã§ããæåã«åãå®è¡å¯èœ JAR ãã¡ã€ã«ãäœæãã次㫠Docker ãã¡ã€ã«ã§æ瀺ãæå®ããŠãããã³ã³ãã ã€ã¡ãŒãžã«ããã±ãŒãžåããŸãã
ãŸããäŸåé¢ä¿ããã¹ãäžã«ãã£ãã·ã¥ãããåå¥ã®ã¬ã€ã€ãŒã«åã蟌ãéå±€åæ©èœãæå¹ã«ããããšã§ã³ã³ãããŒãæé©åããããšãæ€èšããŸããããŸããã¢ããªã±ãŒã·ã§ã³ã®èãã¬ã€ã€ãŒãã³ã³ãããŒã®å®è¡ãšã³ãžã³ã®ã¹ã±ãžã¥ãŒã«æã«èªã¿èŸŒãŸããŸãã
ãã®èšäºã§äœ¿çšãããŠãããã¹ãŠã®ãœãŒã¹ ã³ãŒãã¯ã次ã®å Žæã«ãããŸãã
ã³ãã³ããªãã¡ã¬ã³ã¹
ãã®èšäºã§äœ¿çšããã³ãã³ããç°¡åã«ãŸãšããŸãã
ã³ã³ããã¹ãã®ã¯ãªã¢:
docker system prune -a
Docker ãã¡ã€ã«ã䜿çšããŠã³ã³ãã㌠ã€ã¡ãŒãžãäœæããŸãã
docker build -f <Docker file name> -t <tag> .
ãœãŒã¹ ã³ãŒãããã³ã³ãã㌠ã€ã¡ãŒãžããã«ãããŸã (Dockerfile ã¯äœ¿çšããŸãã)ã
mvn spring-boot:build-image
äŸåé¢ä¿ã¬ã€ã€ãŒã衚瀺ããŸãã ã¢ããªã±ãŒã·ã§ã³ JAR ãã¡ã€ã«ããã«ãããåã«ãéå±€åæ©èœã spring-boot-maven-plugin ã§æå¹ã«ãªã£ãŠããããšã確èªããŠãã ããã
java -Djarmode=layertools -jar application.jar list
äŸåé¢ä¿ã¬ã€ã€ãŒãæœåºããŠããŸãã ã¢ããªã±ãŒã·ã§ã³ JAR ãã¡ã€ã«ããã«ãããåã«ãéå±€åæ©èœã spring-boot-maven-plugin ã§æå¹ã«ãªã£ãŠããããšã確èªããŠãã ããã
java -Djarmode=layertools -jar application.jar extract
ã³ã³ããã€ã¡ãŒãžã®ãªã¹ãã衚瀺ãã
docker images
ã³ã³ãã ã€ã¡ãŒãžå ã®å·ŠåŽã衚瀺ããŸã (ãã€ãã³ã° ããŒã«ãã€ã³ã¹ããŒã«ãããŠããããšã確èªããŠãã ãã)ã
dive <image ID or image tag>
åºæïŒ habr.com