ΠΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ ΡΡ ΠΏΠΎΡΡΠ°Π»ΠΈ ΠΏΡΠ΅ΡΠ΅ΡΠΈΡΠ°Π½ΠΎ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ Π·Π° ΠΏΠ°ΠΊΠΎΠ²Π°ΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ ΡΠ° ΡΠ²ΠΈΠΌ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈΠΌΠ° ΠΎΠ΄ ΡΠΎΡΡΠ²Π΅ΡΠ° ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠ³ ΡΠΈΡΡΠ΅ΠΌΠ°, Π° Π·Π°ΡΠΈΠΌ ΡΠΈΡ ΠΎΠ²ΠΎ ΠΈΡΠΏΠΎΡΡΠΊΡ Ρ ΡΠ°Π·Π»ΠΈΡΠΈΡΠ° ΠΎΠΊΡΡΠΆΠ΅ΡΠ°.
ΠΠ²Π°Ρ ΡΠ»Π°Π½Π°ΠΊ ΠΏΠΎΠΊΡΠΈΠ²Π° ΡΠ°Π·Π»ΠΈΡΠΈΡΠ΅ Π½Π°ΡΠΈΠ½Π΅ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ΡΠ° Π‘ΠΏΡΠΈΠ½Π³ ΠΠΎΠΎΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅:
- ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΠΠΎΡΠΊΠ΅Ρ ΡΠ»ΠΈΠΊΠ΅ ΠΏΠΎΠΌΠΎΡΡ ΠΠΎΡΠΊΠ΅Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅,
- ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΠΠ¦Π ΡΠ»ΠΈΠΊΠ΅ ΠΈΠ· ΠΈΠ·Π²ΠΎΡΠ° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ Π¦Π»ΠΎΡΠ΄-ΠΠ°ΡΠΈΠ²Π΅ ΠΡΠΈΠ»Π΄ΠΏΠ°ΡΠΊ,
- ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΡ ΡΠ»ΠΈΠΊΠ΅ ΡΠΎΠΊΠΎΠΌ ΡΠ°Π΄Π° ΠΎΠ΄Π²Π°ΡΠ°ΡΠ΅ΠΌ Π΄Π΅Π»ΠΎΠ²Π° ΠΠΠ -Π° Ρ ΡΠ°Π·Π»ΠΈΡΠΈΡΠ΅ ΡΠ»ΠΎΡΠ΅Π²Π΅ ΠΏΠΎΠΌΠΎΡΡ Π²ΠΈΡΠ΅ΡΠ»ΠΎΡΠ½ΠΈΡ Π°Π»Π°ΡΠ°.
ΠΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°
ΠΠ²Π°Ρ ΡΠ»Π°Π½Π°ΠΊ ΡΠ΅ ΠΏΡΠΎΠΏΡΠ°ΡΠ΅Π½ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΡΠ°Π΄Π½ΠΎΠ³ ΠΊΠΎΠ΄Π°
Π’Π΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΡΠ° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°
ΠΠΎΡΠ΅ΡΠ΅ΠΌΠΎ ΡΠ° ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΡΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° ΠΊΠΎΡΠ° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Ρ ΡΠ»Π°Π½ΠΊΡ:
- Π‘Π»ΠΈΠΊΠ° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°: Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΠΎΠ΄ΡΠ΅ΡΠ΅Π½ΠΎΠ³ ΡΠΎΡΠΌΠ°ΡΠ°. ΠΠΎΠ½Π²Π΅ΡΡΠΎΠ²Π°ΡΠ΅ΠΌΠΎ Π½Π°ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ Ρ ΡΠ»ΠΈΠΊΡ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ΠΌ Π°Π»Π°ΡΠ° Π·Π° ΠΏΡΠ°Π²ΡΠ΅ΡΠ΅.
- ΠΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ: ΠΠ·Π²ΡΡΠ½Π° ΠΈΠ½ΡΡΠ°Π½ΡΠ° ΡΠ»ΠΈΠΊΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°.
- ΠΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΡΠΊΠΈ ΠΌΠΎΡΠΎΡ: ΠΠ΅ΠΌΠΎΠ½ΡΠΊΠΈ ΠΏΡΠΎΡΠ΅Ρ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠ°Π½ Π·Π° ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°.
- ΠΠΎΠΌΠ°ΡΠΈΠ½ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°: ΠΠ»Π°Π²Π½ΠΈ ΡΠ°ΡΡΠ½Π°Ρ Π½Π° ΠΊΠΎΠΌΠ΅ ΡΠ°Π΄ΠΈ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΡΠΊΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·Π°ΠΌ.
- Π Π΅Π³ΠΈΡΡΠ°Ρ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°: ΠΠΏΡΡΠ° Π»ΠΎΠΊΠ°ΡΠΈΡΠ° ΠΊΠΎΡΠ° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° ΠΎΠ±ΡΠ°Π²ΡΠΈΠ²Π°ΡΠ΅ ΠΈ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΡ ΡΠ»ΠΈΠΊΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°.
- ΠΠ¦Π ΡΡΠ°Π½Π΄Π°ΡΠ΄:
ΠΠ½ΠΈΡΠΈΡΠ°ΡΠΈΠ²Π° Π·Π° ΠΎΡΠ²ΠΎΡΠ΅Π½Π΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅ (ΠΠ¦Π) ΡΠ΅ Π»Π°Π³Π°Π½Π°, ΠΎΡΠ²ΠΎΡΠ΅Π½Π° ΡΡΡΡΠΊΡΡΡΠ° ΡΠΏΡΠ°Π²ΡΠ°ΡΠ° ΡΠΎΡΠΌΠΈΡΠ°Π½Π° Ρ ΠΎΠΊΠ²ΠΈΡΡ ΠΠΈΠ½ΡΠΊ ΡΠΎΠ½Π΄Π°ΡΠΈΡΠ΅. ΠΠ¦Π ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ° ΡΠ»ΠΈΠΊΠ΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ΅ ΠΈΠ½Π΄ΡΡΡΡΠΈΡΡΠΊΠ΅ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π΅ Π·Π° ΡΠ»ΠΈΠΊΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° ΠΈ ΡΠΎΡΠΌΠ°ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π° ΠΈΠ·Π²ΡΡΠ°Π²Π°ΡΠ° ΠΊΠ°ΠΊΠΎ Π±ΠΈ ΡΠ΅ ΠΎΡΠΈΠ³ΡΡΠ°Π»ΠΎ Π΄Π° ΡΠ²ΠΈ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΡΠΊΠΈ ΠΌΠΎΡΠΎΡΠΈ ΠΌΠΎΠ³Ρ Π΄Π° ΠΏΠΎΠΊΡΠ΅ΡΡ ΡΠ»ΠΈΠΊΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° ΠΊΡΠ΅ΠΈΡΠ°Π½Π΅ Π±ΠΈΠ»ΠΎ ΠΊΠΎΡΠΈΠΌ Π°Π»Π°ΡΠΎΠΌ Π·Π° ΠΏΡΠ°Π²ΡΠ΅ΡΠ΅.
ΠΠ° Π±ΠΈΡΠΌΠΎ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈΠ·ΠΎΠ²Π°Π»ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ, ΡΠΌΠΎΡΠ°Π²Π°ΠΌΠΎ Π½Π°ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ Ρ ΡΠ»ΠΈΠΊΡ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° ΠΈ ΠΎΠ±ΡΠ°Π²ΡΡΡΠ΅ΠΌΠΎ ΡΡ ΡΠ»ΠΈΠΊΡ Ρ Π΄Π΅ΡΠ΅Π½ΠΎΠΌ ΡΠ΅Π³ΠΈΡΡΡΡ. ΠΡΠ΅ΠΌΠ΅ ΠΈΠ·Π²ΠΎΡΠ΅ΡΠ° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° ΠΏΡΠ΅ΡΠ·ΠΈΠΌΠ° ΠΎΠ²Ρ ΡΠ»ΠΈΠΊΡ ΠΈΠ· ΡΠ΅Π³ΠΈΡΡΡΠ°, ΡΠ°ΡΠΏΠ°ΠΊΡΡΠ΅ ΡΠ΅ ΠΈ ΠΏΠΎΠΊΡΠ΅ΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ ΡΠ½ΡΡΠ°Ρ ΡΠ΅.
ΠΠ΅ΡΠ·ΠΈΡΠ° 2.3 Π‘ΠΏΡΠΈΠ½Π³ ΠΠΎΠΎΡ-Π° ΠΎΠ±Π΅Π·Π±Π΅ΡΡΡΠ΅ Π΄ΠΎΠ΄Π°ΡΠΊΠ΅ Π·Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΠΠ¦Π ΡΠ»ΠΈΠΊΠ°.
ΠΠ·Π³ΡΠ°Π΄ΡΠ° ΠΈΠΌΠΈΡΠ° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° Π½Π° ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π°Π»Π°Π½ Π½Π°ΡΠΈΠ½
ΠΡΠ΅ΠΈΡΠ°ΡΠ΅ ΠΠΎΡΠΊΠ΅Ρ ΡΠ»ΠΈΠΊΠ° Π·Π° Π‘ΠΏΡΠΈΠ½Π³ ΠΠΎΠΎΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ ΡΠ΅ Π²Π΅ΠΎΠΌΠ° ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ Π΄ΠΎΠ΄Π°Π²Π°ΡΠ΅ΠΌ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ΡΠΏΡΡΡΡΠ°Π²Π° Ρ ΠΠΎΡΠΊΠ΅Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ.
ΠΡΠ²ΠΎ ΠΊΡΠ΅ΠΈΡΠ°ΠΌΠΎ ΠΈΠ·Π²ΡΡΠ½Ρ ΠΠΠ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ ΠΈ, ΠΊΠ°ΠΎ Π΄Π΅ΠΎ ΡΠΏΡΡΡΡΠ°Π²Π° Π·Π° ΠΠΎΡΠΊΠ΅Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ, ΠΊΠΎΠΏΠΈΡΠ°ΠΌΠΎ ΠΈΠ·Π²ΡΡΠ½Ρ ΠΠΠ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½Ρ ΠΠ Π ΡΠ»ΠΈΠΊΡ Π½Π°ΠΊΠΎΠ½ ΠΏΡΠΈΠΌΠ΅Π½Π΅ Π½Π΅ΠΎΠΏΡ ΠΎΠ΄Π½ΠΈΡ ΠΏΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΠ°.
Π₯Π°ΡΠ΄Π΅ Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΠΌΠΎ Π½Π°ΡΡ Π‘ΠΏΡΠΈΠ½Π³ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ Π½Π° web
, lombok
ΠΈ actuator
. Π’Π°ΠΊΠΎΡΠ΅ Π΄ΠΎΠ΄Π°ΡΠ΅ΠΌΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Ρ ΠΎΠ΄ΠΌΠΎΡΠ° Π·Π° ΠΏΡΡΠΆΠ°ΡΠ΅ ΠΠΠ-ΡΠ° GET
ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ.
ΠΡΠ΅ΠΈΡΠ°ΡΠ΅ ΠΠΎΡΠΊΠ΅ΡΡΠΈΠ»Π΅-Π°
ΠΠ°ΡΠΈΠΌ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈΡΠ΅ΠΌΠΎ ΠΎΠ²Ρ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ Π΄ΠΎΠ΄Π°Π²Π°ΡΠ΅ΠΌ Dockerfile
:
FROM adoptopenjdk:11-jre-hotspot
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} application.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/application.jar"]
ΠΠ°ΡΠ° ΠΠΎΡΠΊΠ΅Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΡΠ°Π΄ΡΠΆΠΈ ΠΎΡΠ½ΠΎΠ²Π½Ρ ΡΠ»ΠΈΠΊΡ ΠΈΠ· adoptopenjdk
, Π½Π° Π²ΡΡ
Ρ ΠΊΠΎΡΠ΅ ΠΊΠΎΠΏΠΈΡΠ°ΠΌΠΎ Π½Π°ΡΡ ΠΠΠ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ ΠΈ Π·Π°ΡΠΈΠΌ ΠΎΡΠ²Π°ΡΠ°ΠΌΠΎ ΠΏΠΎΡΡ, 8080
ΠΊΠΎΡΠΈ ΡΠ΅ ΡΠ°ΡΠ»ΡΡΠ°ΡΠΈ Π·Π°Ρ
ΡΠ΅Π²Π΅.
ΠΠ·Π³ΡΠ°Π΄ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅
ΠΡΠ²ΠΎ ΠΌΠΎΡΠ°ΡΠ΅ Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ ΠΠ°Π²Π΅Π½ ΠΈΠ»ΠΈ ΠΡΠ°Π΄Π»Π΅. ΠΠ²Π΄Π΅ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠΎ ΠΠ°Π²Π΅Π½:
mvn clean package
ΠΠ²ΠΎ ΠΊΡΠ΅ΠΈΡΠ° ΠΈΠ·Π²ΡΡΠ½Ρ ΠΠΠ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ Π·Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ. ΠΠΎΡΠ°ΠΌΠΎ Π΄Π° ΠΊΠΎΠ½Π²Π΅ΡΡΡΡΠ΅ΠΌΠΎ ΠΎΠ²Π°Ρ ΠΈΠ·Π²ΡΡΠ½ΠΈ ΠΠΠ Ρ ΠΠΎΡΠΊΠ΅Ρ ΡΠ»ΠΈΠΊΡ Π΄Π° Π±ΠΈ ΡΠ΅ ΠΏΠΎΠΊΡΠ΅Π½ΡΠΎ Π½Π° ΠΠΎΡΠΊΠ΅Ρ ΠΌΠ°ΡΠΈΠ½ΠΈ.
ΠΡΠ΅ΠΈΡΠ°ΡΠ΅ ΡΠ»ΠΈΠΊΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°
ΠΠ°ΡΠΈΠΌ ΡΡΠ°Π²ΡΠ°ΠΌΠΎ ΠΎΠ²Ρ ΠΈΠ·Π²ΡΡΠ½Ρ ΠΠΠ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ Ρ ΠΠΎΡΠΊΠ΅Ρ ΡΠ»ΠΈΠΊΡ ΡΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ΠΌΠΎ ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ docker build
ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΠ° ΠΏΡΠΎΡΠ΅ΠΊΡΠ° ΠΊΠΎΡΠΈ ΡΠ°Π΄ΡΠΆΠΈ ΠΠΎΡΠΊΠ΅ΡΡΠΈΠ»Π΅ ΠΊΡΠ΅ΠΈΡΠ°Π½ ΡΠ°Π½ΠΈΡΠ΅:
docker build -t usersignup:v1 .
ΠΠ°ΡΡ ΡΠ»ΠΈΠΊΡ ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π²ΠΈΠ΄Π΅ΡΠΈ Π½Π° Π»ΠΈΡΡΠΈ ΠΏΠΎΠΌΠΎΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π΅:
docker images
ΠΠ·Π»Π°Π· Π³ΠΎΡΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΡΠΊΡΡΡΡΡΠ΅ Π½Π°ΡΡ ΡΠ»ΠΈΠΊΡ usersignup
Π·Π°ΡΠ΅Π΄Π½ΠΎ ΡΠ° ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΡΠ»ΠΈΠΊΠΎΠΌ, adoptopenjdk
Π½Π°Π²Π΅Π΄Π΅Π½ΠΎ Ρ Π½Π°ΡΠΎΡ ΠΠΎΡΠΊΠ΅Ρ Π΄Π°ΡΠΎΡΠ΅ΡΠΈ.
REPOSITORY TAG SIZE
usersignup v1 249MB
adoptopenjdk 11-jre-hotspot 229MB
ΠΡΠ΅Π³Π»Π΅Π΄Π°ΡΡΠ΅ ΡΠ»ΠΎΡΠ΅Π²Π΅ ΡΠ½ΡΡΠ°Ρ ΡΠ»ΠΈΠΊΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°
Π₯Π°ΡΠ΄Π΅ Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π°ΠΌΠΎ Π³ΠΎΠΌΠΈΠ»Ρ ΡΠ»ΠΎΡΠ΅Π²Π° ΡΠ½ΡΡΠ°Ρ ΡΠ»ΠΈΠΊΠ΅. ΠΠΎΡΠΈΡΡΠΈΡΠ΅ΠΌΠΎ
dive usersignup:v1
ΠΠ²ΠΎ Π΄Π΅Π»Π° ΠΈΠ·Π»Π°Π·Π° ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΠΈΠ²Π΅:
ΠΠ°ΠΎ ΡΡΠΎ Π²ΠΈΠ΄ΠΈΠΌΠΎ, ΡΠ»ΠΎΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ ΡΠΈΠ½ΠΈ Π·Π½Π°ΡΠ°ΡΠ°Π½ Π΄Π΅ΠΎ Π²Π΅Π»ΠΈΡΠΈΠ½Π΅ ΡΠ»ΠΈΠΊΠ΅. ΠΠ΅Π»ΠΈΠΌΠΎ Π΄Π° ΡΠΌΠ°ΡΠΈΠΌΠΎ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ ΠΎΠ²ΠΎΠ³ ΡΠ»ΠΎΡΠ° Ρ ΡΠ»Π΅Π΄Π΅ΡΠΈΠΌ ΠΎΠ΄Π΅ΡΡΠΈΠΌΠ° ΠΊΠ°ΠΎ Π΄Π΅ΠΎ Π½Π°ΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΠ΅.
ΠΡΠ΅ΠΈΡΠ°ΡΠ΅ ΡΠ»ΠΈΠΊΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° ΠΏΠΎΠΌΠΎΡΡ ΠΡΠΈΠ»Π΄ΠΏΠ°ΡΠΊ-Π°
ΠΡΠ΅Π΄Π½ΠΎΡΡ ΠΏΠ°ΠΊΠ΅ΡΠ° Π·Π° ΠΏΡΠ°Π²ΡΠ΅ΡΠ΅ ΠΎΠ±Π»Π°ΠΊΠ°
ΠΠ΅Π΄Π½Π° ΠΎΠ΄ Π³Π»Π°Π²Π½ΠΈΡ ΠΏΡΠ΅Π΄Π½ΠΎΡΡΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ° ΠΡΠΈΠ»Π΄ΠΏΠ°ΡΠΊ-Π° Π·Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΡΠ»ΠΈΠΊΠ° ΡΠ΅ ΡΠΎ ΠΡΠΎΠΌΠ΅Π½Π°ΠΌΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ΅ ΡΠ»ΠΈΠΊΠ΅ ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΡΠΏΡΠ°Π²ΡΠ°ΡΠΈ ΡΠ΅Π½ΡΡΠ°Π»Π½ΠΎ (Π±ΡΠΈΠ»Π΄Π΅Ρ) ΠΈ ΠΏΡΠ΅Π½ΠΎΡΠΈΡΠΈ Π½Π° ΡΠ²Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ Π±ΡΠΈΠ»Π΄Π΅Ρ.
ΠΠ°ΠΊΠ΅ΡΠΈ ΠΈΠ·ΡΠ°Π΄Π΅ Π±ΠΈΠ»ΠΈ ΡΡ ΡΠ²ΡΡΡΠΎ ΠΏΠΎΠ²Π΅Π·Π°Π½ΠΈ ΡΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΎΠΌ. Π¦Π»ΠΎΡΠ΄-ΠΠ°ΡΠΈΠ²Π΅ ΠΡΠΈΠ»Π΄ΠΏΠ°ΡΠΊΡ ΠΎΠ±Π΅Π·Π±Π΅ΡΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΠ΄ΠΈΠ·Π°ΡΠΈΡΡ Π½Π° ΡΠ°Π·Π»ΠΈΡΠΈΡΠΈΠΌ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΠΌΠ° ΠΏΠΎΠ΄ΡΠΆΠ°Π²Π°ΡΡΡΠΈ ΠΠ¦Π ΡΠΎΡΠΌΠ°Ρ ΡΠ»ΠΈΠΊΠ΅, ΠΊΠΎΡΠΈ ΠΎΠ±Π΅Π·Π±Π΅ΡΡΡΠ΅ Π΄Π° ΡΠ»ΠΈΠΊΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠΊΡΠ΅ΡΠ΅ ΠΠΎΡΠΊΠ΅Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·Π°ΠΌ.
ΠΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π‘ΠΏΡΠΈΠ½Π³ ΠΠΎΠΎΡ Π΄ΠΎΠ΄Π°ΡΠΊΠ°
Π‘ΠΏΡΠΈΠ½Π³ ΠΠΎΠΎΡ Π΄ΠΎΠ΄Π°ΡΠ°ΠΊ ΠΏΡΠ°Π²ΠΈ ΠΠ¦Π ΡΠ»ΠΈΠΊΠ΅ ΠΈΠ· ΠΈΠ·Π²ΠΎΡΠ° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ ΠΡΠΈΠ»Π΄ΠΏΠ°ΡΠΊ. Π‘Π»ΠΈΠΊΠ΅ ΡΠ΅ ΠΊΡΠ΅ΠΈΡΠ°ΡΡ ΠΏΠΎΠΌΠΎΡΡ bootBuildImage
Π·Π°Π΄Π°ΡΠΈ (ΠΡΠ°Π΄Π»Π΅) ΠΈΠ»ΠΈ spring-boot:build-image
ΡΠΈΡΠ΅Π²ΠΈ (ΠΠ°Π²Π΅Π½) ΠΈ Π»ΠΎΠΊΠ°Π»Π½Π° ΠΠΎΡΠΊΠ΅Ρ ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΠ°.
ΠΠΎΠΆΠ΅ΠΌΠΎ Π΄Π° ΠΏΡΠΈΠ»Π°Π³ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠ΅ ΡΠ»ΠΈΠΊΠ΅ ΠΊΠΎΡΠ° ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½Π° Π·Π° Π³ΡΡΠ°ΡΠ΅ Ρ ΠΠΎΡΠΊΠ΅Ρ ΡΠ΅Π³ΠΈΡΡΠ°Ρ ΡΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ΠΌΠΎ Π½Π°Π²Π΅ΡΡΠΈ ΠΈΠΌΠ΅ Ρ 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>
Π₯Π°ΡΠ΄Π΅ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΠΌΠΎ ΠΠ°Π²Π΅Π½ Π΄Π° ΡΠΎ ΡΡΠ°Π΄ΠΈΠΌΠΎ build-image
ΡΠΈΡΠ΅Π²ΠΈ Π·Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ ΠΈ ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΡΠ»ΠΈΠΊΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°. Π’ΡΠ΅Π½ΡΡΠ½ΠΎ Π½Π΅ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠΎ Π½ΠΈΡΠ΅Π΄Π°Π½ ΠΠΎΡΠΊΠ΅ΡΡΠΈΠ»Π΅Ρ.
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
ΠΊΠΎΡΠΈΡΡΠΈ ΡΠ΅ Π·Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΡΠ°Π΄Π½Π΅ ΠΠ¦Π ΡΠ»ΠΈΠΊΠ΅. ΠΠ°ΠΎ ΠΈ ΡΠ°Π½ΠΈΡΠ΅, ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π²ΠΈΠ΄Π΅ΡΠΈ ΡΠ»ΠΈΠΊΡ Π½Π°Π²Π΅Π΄Π΅Π½Ρ ΠΊΠ°ΠΎ ΠΠΎΡΠΊΠ΅Ρ ΡΠ»ΠΈΠΊΠ° ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π΅:
docker images
ΠΠ°ΠΊΡΡΡΠ°ΠΊ:
REPOSITORY SIZE
paketobuildpacks/run 84.3MB
gcr.io/paketo-buildpacks/builder 652MB
pratikdas/usersignup 257MB
ΠΡΠ΅ΠΈΡΠ°ΡΠ΅ ΡΠ»ΠΈΠΊΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° ΠΏΠΎΠΌΠΎΡΡ ΠΠΈΠ±-Π°
ΠΠΈΠ± ΡΠ΅ ΠΠΎΠΎΠ³Π»Π΅ Π΄ΠΎΠ΄Π°ΡΠ°ΠΊ Π·Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΡΠ»ΠΈΠΊΠ΅ ΠΊΠΎΡΠΈ ΠΏΡΡΠΆΠ° Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΈ ΠΌΠ΅ΡΠΎΠ΄ Π·Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΡΠ»ΠΈΠΊΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° ΠΈΠ· ΠΈΠ·Π²ΠΎΡΠ½ΠΎΠ³ ΠΊΠΎΠ΄Π°.
ΠΡΠΈΠ»Π°Π³ΠΎΠ΄ΠΈ jib-maven-plugin
Ρ ΠΏΠΎΠΌ.ΠΊΠΌΠ»:
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>2.5.2</version>
</plugin>
ΠΠ°ΡΠΈΠΌ ΠΏΠΎΠΊΡΠ΅ΡΠ΅ΠΌΠΎ Π΄ΠΎΠ΄Π°ΡΠ°ΠΊ ΠΠΈΠ± ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΠ°Π²Π΅Π½ Π΄Π° Π±ΠΈΡΠΌΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΠ»ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ ΠΈ ΠΊΡΠ΅ΠΈΡΠ°Π»ΠΈ ΡΠ»ΠΈΠΊΡ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°. ΠΠ°ΠΎ ΠΈ ΡΠ°Π½ΠΈΡΠ΅, ΠΎΠ²Π΄Π΅ Π½Π΅ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠΎ Π½ΠΈΠΊΠ°ΠΊΠ²Π΅ ΠΠΎΡΠΊΠ΅Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅:
mvn compile jib:build -Dimage=<docker registry name>/usersignup:v1
ΠΠ°ΠΊΠΎΠ½ ΠΈΠ·Π²ΡΡΠ΅ΡΠ° Π³ΠΎΡΡΠ΅ ΠΠ°Π²Π΅Π½ ΠΊΠΎΠΌΠ°Π½Π΄Π΅, Π΄ΠΎΠ±ΠΈΡΠ°ΠΌΠΎ ΡΠ»Π΅Π΄Π΅ΡΠΈ ΠΈΠ·Π»Π°Π·:
[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
ΠΠ·Π»Π°Π· ΠΏΠΎΠΊΠ°Π·ΡΡΠ΅ Π΄Π° ΡΠ΅ ΡΠ»ΠΈΠΊΠ° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° ΠΊΡΠ΅ΠΈΡΠ°Π½Π° ΠΈ ΡΠΌΠ΅ΡΡΠ΅Π½Π° Ρ ΡΠ΅Π³ΠΈΡΡΠ°Ρ.
ΠΠΎΡΠΈΠ²Π°ΡΠΈΡΠ΅ ΠΈ ΡΠ΅Ρ Π½ΠΈΠΊΠ΅ Π·Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ»ΠΈΠΊΠ°
ΠΠΌΠ°ΠΌΠΎ Π΄Π²Π° Π³Π»Π°Π²Π½Π° ΡΠ°Π·Π»ΠΎΠ³Π° Π·Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΡ:
- ΠΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠ΅: Π£ ΡΠΈΡΡΠ΅ΠΌΡ ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°, ΡΠ»ΠΈΠΊΠ° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° ΡΠ΅ ΠΏΡΠ΅ΡΠ·ΠΈΠΌΠ° ΠΈΠ· ΡΠ΅Π³ΠΈΡΡΡΠ° ΡΠ»ΠΈΠΊΠ° Π΄ΠΎ Ρ ΠΎΡΡΠ° ΠΊΠΎΡΠΈ ΠΏΠΎΠΊΡΠ΅ΡΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·Π°ΠΌ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°. ΠΠ²Π°Ρ ΠΏΡΠΎΡΠ΅Ρ ΡΠ΅ Π·ΠΎΠ²Π΅ ΠΏΠ»Π°Π½ΠΈΡΠ°ΡΠ΅. ΠΠΎΠ²Π»Π°ΡΠ΅ΡΠ΅ Π²Π΅Π»ΠΈΠΊΠΈΡ ΡΠ»ΠΈΠΊΠ° ΠΈΠ· ΡΠ΅Π³ΠΈΡΡΡΠ° ΡΠ΅Π·ΡΠ»ΡΠΈΡΠ° Π΄ΡΠ³ΠΈΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΎΠΌ ΠΏΠ»Π°Π½ΠΈΡΠ°ΡΠ° Ρ ΡΠΈΡΡΠ΅ΠΌΠΈΠΌΠ° ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° ΠΈ Π΄ΡΠ³ΠΈΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΎΠΌ ΠΈΠ·Π³ΡΠ°Π΄ΡΠ΅ Ρ Π¦Π ΡΠ΅Π²ΠΎΠ²ΠΎΠ΄ΠΈΠΌΠ°.
- Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΡ: ΠΠ΅ΡΠ΅ ΡΠ»ΠΈΠΊΠ΅ ΡΠ°ΠΊΠΎΡΠ΅ ΠΈΠΌΠ°ΡΡ Π²Π΅ΡΡ ΠΏΠΎΠ²ΡΡΠΈΠ½Ρ Π·Π° ΡΠ°ΡΠΈΠ²ΠΎΡΡΠΈ.
ΠΠΎΡΠΊΠ΅Ρ ΡΠ»ΠΈΠΊΠ° ΡΠ΅ ΡΠ°ΡΡΠΎΡΠΈ ΠΎΠ΄ Ρ ΡΠΏΠ΅ ΡΠ»ΠΎΡΠ΅Π²Π°, ΠΎΠ΄ ΠΊΠΎΡΠΈΡ ΡΠ²Π°ΠΊΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΡ Ρ Π½Π°ΡΠ΅ΠΌ ΠΠΎΡΠΊΠ΅ΡΡΠΈΠ»Π΅-Ρ. Π‘Π²Π°ΠΊΠΈ ΡΠ»ΠΎΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ° Π΄Π΅Π»ΡΡ ΠΏΡΠΎΠΌΠ΅Π½Π° Ρ Π΄ΠΎΡΠ΅ΠΌ ΡΠ»ΠΎΡΡ. ΠΠ°Π΄Π° ΠΈΠ·Π²ΡΡΠ΅ΠΌΠΎ ΠΠΎΡΠΊΠ΅Ρ ΡΠ»ΠΈΠΊΡ ΠΈΠ· ΡΠ΅Π³ΠΈΡΡΡΠ°, ΠΎΠ½Π° ΡΠ΅ ΠΏΠΎΠ²Π»Π°ΡΠΈ Ρ ΡΠ»ΠΎΡΠ΅Π²ΠΈΠΌΠ° ΠΈ ΠΊΠ΅ΡΡΡΠ΅ Π½Π° Ρ ΠΎΡΡΡ.
Π‘ΠΏΡΠΈΠ½Π³ ΠΠΎΠΎΡ ΠΊΠΎΡΠΈΡΡΠΈ
Π€ΠΎΡΠΌΡΠ»Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΠ΅ ΡΠ΅ ΡΡΡΠ΅Π΄ΡΡΠ΅ΡΡΡΠ΅ Π½Π° ΠΈΠ·ΠΎΠ»ΠΎΠ²Π°ΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ Π½Π° ΠΎΠ΄Π²ΠΎΡΠ΅Π½ΠΎΠΌ Π½ΠΈΠ²ΠΎΡ ΠΎΠ΄ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ ΠΎΠ΄ Π‘ΠΏΡΠΈΠ½Π³ Π€ΡΠ°ΠΌΠ΅Π²ΠΎΡΠΊ-Π°.
Π‘Π»ΠΎΡ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ, ΠΊΠΎΡΠΈ ΡΠΈΠ½ΠΈ Π½Π°ΡΠ²Π΅ΡΠΈ Π΄Π΅ΠΎ Π΄Π΅Π±Π΅Π»Π΅ ΠΠΠ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅, ΠΏΡΠ΅ΡΠ·ΠΈΠΌΠ° ΡΠ΅ ΡΠ°ΠΌΠΎ ΡΠ΅Π΄Π½ΠΎΠΌ ΠΈ ΠΊΠ΅ΡΡΡΠ΅ Π½Π° Ρ ΠΎΡΡ ΡΠΈΡΡΠ΅ΠΌΡ.
Π‘Π°ΠΌΠΎ ΡΠ°Π½Π°ΠΊ ΡΠ»ΠΎΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ ΡΠ΅ ΠΏΠΎΠ²Π»Π°ΡΠΈ ΡΠΎΠΊΠΎΠΌ Π°ΠΆΡΡΠΈΡΠ°ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ ΠΈ Π·Π°ΠΊΠ°Π·ΠΈΠ²Π°ΡΠ° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°. ΠΊΠ°ΠΎ ΡΡΠΎ ΡΠ΅ ΠΏΡΠΈΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΠΎΠ²ΠΎΠΌ Π΄ΠΈΡΠ°Π³ΡΠ°ΠΌΡ:
Π£ ΡΠ»Π΅Π΄Π΅ΡΠΈΠΌ ΠΎΠ΄Π΅ΡΡΠΈΠΌΠ° ΡΠ΅ΠΌΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΠΈ ΠΊΠ°ΠΊΠΎ Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΠΌΠΎ ΠΎΠ²Π΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΎΠ²Π°Π½Π΅ ΡΠ»ΠΈΠΊΠ΅ Π·Π° Π‘ΠΏΡΠΈΠ½Π³ ΠΠΎΠΎΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ.
ΠΡΠ΅ΠΈΡΠ°ΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΎΠ²Π°Π½Π΅ ΡΠ»ΠΈΠΊΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° Π·Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ Π‘ΠΏΡΠΈΠ½Π³ ΠΠΎΠΎΡ ΠΏΠΎΠΌΠΎΡΡ ΠΡΠΈΠ»Π΄ΠΏΠ°ΡΠΊ-Π°
Π‘ΠΏΡΠΈΠ½Π³ ΠΠΎΠΎΡ 2.3 ΠΏΠΎΠ΄ΡΠΆΠ°Π²Π° ΡΠ»ΠΎΡΠ΅Π²Π΅ ΡΠ°ΠΊΠΎ ΡΡΠΎ ΠΈΠ·Π΄Π²Π°ΡΠ° Π΄Π΅Π»ΠΎΠ²Π΅ Π΄Π΅Π±Π΅Π»Π΅ ΠΠΠ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ Ρ Π·Π°ΡΠ΅Π±Π½Π΅ ΡΠ»ΠΎΡΠ΅Π²Π΅. Π€ΡΠ½ΠΊΡΠΈΡΠ° ΡΠ»ΠΎΡΠ΅Π²ΠΈΡΠΎΡΡΠΈ ΡΠ΅ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΎ ΠΎΠ½Π΅ΠΌΠΎΠ³ΡΡΠ΅Π½Π° ΠΈ ΠΌΠΎΡΠ° Π±ΠΈΡΠΈ Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ ΠΎΠΌΠΎΠ³ΡΡΠ΅Π½Π° ΠΏΠΎΠΌΠΎΡΡ Π‘ΠΏΡΠΈΠ½Π³ ΠΠΎΠΎΡ ΠΠ°Π²Π΅Π½ Π΄ΠΎΠ΄Π°ΡΠΊΠ°:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<layers>
<enabled>true</enabled>
</layers>
</configuration>
</plugin>
ΠΠΎΡΠΈΡΡΠΈΡΠ΅ΠΌΠΎ ΠΎΠ²Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌΠΎ ΡΠ»ΠΈΠΊΡ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° ΠΏΡΠ²ΠΎ ΡΠ° ΠΡΠΈΠ»Π΄ΠΏΠ°ΡΠΊ-ΠΎΠΌ, Π° Π·Π°ΡΠΈΠΌ ΡΠ° ΠΠΎΡΠΊΠ΅Ρ-ΠΎΠΌ Ρ ΡΠ»Π΅Π΄Π΅ΡΠΈΠΌ ΠΎΠ΄Π΅ΡΡΠΈΠΌΠ°.
Π₯Π°ΡΠ΄Π΅ Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ΠΌΠΎ build-image
ΠΠ°Π²Π΅Π½ ΡΠΈΡ Π·Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΡΠ»ΠΈΠΊΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°:
mvn spring-boot:build-image
ΠΠΊΠΎ ΠΏΠΎΠΊΡΠ΅Π½Π΅ΠΌΠΎ ΠΠΈΠ²Π΅ Π΄Π° Π±ΠΈΡΠΌΠΎ Π²ΠΈΠ΄Π΅Π»ΠΈ ΡΠ»ΠΎΡΠ΅Π²Π΅ Π½Π° ΡΠ΅Π·ΡΠ»ΡΡΡΡΡΠΎΡ ΡΠ»ΠΈΡΠΈ, ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π²ΠΈΠ΄Π΅ΡΠΈ Π΄Π° ΡΠ΅ ΡΠ»ΠΎΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ (ΠΎΠ·Π½Π°ΡΠ΅Π½ ΡΡΠ²Π΅Π½ΠΎΠΌ Π±ΠΎΡΠΎΠΌ) ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΠΈ Ρ ΠΎΠΏΡΠ΅Π³Ρ ΠΊΠΈΠ»ΠΎΠ±Π°ΡΡΠ° Ρ ΠΏΠΎΡΠ΅ΡΠ΅ΡΡ ΡΠ° ΠΎΠ½ΠΈΠΌ ΡΡΠΎ ΡΠΌΠΎ Π΄ΠΎΠ±ΠΈΠ»ΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ Π΄Π΅Π±Π΅Π»ΠΈ ΠΠΠ ΡΠΎΡΠΌΠ°Ρ:
ΠΡΠ΅ΠΈΡΠ°ΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΎΠ²Π°Π½Π΅ ΡΠ»ΠΈΠΊΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° Π·Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ Π‘ΠΏΡΠΈΠ½Π³ ΠΠΎΠΎΡ ΠΏΠΎΠΌΠΎΡΡ ΠΠΎΡΠΊΠ΅Ρ-Π°
Π£ΠΌΠ΅ΡΡΠΎ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΠΌΠΎ ΠΠ°Π²Π΅Π½ ΠΈΠ»ΠΈ ΠΡΠ°Π΄Π»Π΅ Π΄ΠΎΠ΄Π°ΡΠ°ΠΊ, ΡΠ°ΠΊΠΎΡΠ΅ ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΠΌΠΎ ΡΠ»ΠΎΡΠ΅Π²ΠΈΡΡ ΠΠΎΡΠΊΠ΅Ρ ΠΠΠ ΡΠ»ΠΈΠΊΡ ΡΠ° ΠΠΎΡΠΊΠ΅Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΎΠΌ.
ΠΠ°Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΠΌΠΎ ΠΠΎΡΠΊΠ΅Ρ, ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΡΠ΅ Π΄Π° ΠΈΠ·Π²ΡΡΠΈΠΌΠΎ Π΄Π²Π° Π΄ΠΎΠ΄Π°ΡΠ½Π° ΠΊΠΎΡΠ°ΠΊΠ° Π΄Π° ΠΈΠ·Π΄Π²ΠΎΡΠΈΠΌΠΎ ΡΠ»ΠΎΡΠ΅Π²Π΅ ΠΈ ΠΊΠΎΠΏΠΈΡΠ°ΠΌΠΎ ΠΈΡ Ρ ΠΊΠΎΠ½Π°ΡΠ½Ρ ΡΠ»ΠΈΠΊΡ.
Π‘Π°Π΄ΡΠΆΠ°Ρ ΡΠ΅Π·ΡΠ»ΡΡΡΡΡΠ΅Π³ ΠΠΠ -Π° Π½Π°ΠΊΠΎΠ½ ΠΏΡΠ°Π²ΡΠ΅ΡΠ° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ ΠΠ°Π²Π΅Π½ ΡΠ° ΠΎΠΌΠΎΠ³ΡΡΠ΅Π½ΠΈΠΌ ΡΠ»ΠΎΡΠ΅Π²Π°ΡΠ΅ΠΌ ΡΠ΅ ΠΈΠ·Π³Π»Π΅Π΄Π°ΡΠΈ ΠΎΠ²Π°ΠΊΠΎ:
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
ΠΠ·Π»Π°Π· ΠΏΡΠΈΠΊΠ°Π·ΡΡΠ΅ Π΄ΠΎΠ΄Π°ΡΠ½ΠΈ ΠΠΠ ΡΠ° ΠΈΠΌΠ΅Π½ΠΎΠΌ spring-boot-jarmode-layertools
ΠΈ layersfle.idx
ΡΠ°ΡΠ». ΠΠ²Π° Π΄ΠΎΠ΄Π°ΡΠ½Π° ΠΠΠ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΠΏΡΡΠΆΠ° ΡΠ»ΠΎΡΠ΅Π²ΠΈΡΠ΅ ΠΌΠΎΠ³ΡΡΠ½ΠΎΡΡΠΈ ΠΎΠ±ΡΠ°Π΄Π΅, ΠΊΠ°ΠΎ ΡΡΠΎ ΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Ρ ΡΠ»Π΅Π΄Π΅ΡΠ΅ΠΌ ΠΎΠ΄Π΅ΡΠΊΡ.
ΠΠ·Π΄Π²Π°ΡΠ°ΡΠ΅ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ ΠΎΠ΄ ΠΏΠΎΡΠ΅Π΄ΠΈΠ½Π°ΡΠ½ΠΈΡ ΡΠ»ΠΎΡΠ΅Π²Π°
ΠΠ° Π±ΠΈΡΠΌΠΎ Π²ΠΈΠ΄Π΅Π»ΠΈ ΠΈ ΠΈΠ·Π΄Π²ΠΎΡΠΈΠ»ΠΈ ΡΠ»ΠΎΡΠ΅Π²Π΅ ΠΈΠ· Π½Π°ΡΠ΅Π³ ΡΠ»ΠΎΡΠ΅Π²ΠΈΡΠΎΠ³ ΠΠΠ -Π°, ΠΊΠΎΡΠΈΡΡΠΈΠΌΠΎ ΡΠ²ΠΎΡΡΡΠ²ΠΎ ΡΠΈΡΡΠ΅ΠΌΠ° -Djarmode=layertools
Π·Π° ΠΏΠΎΡΠ΅ΡΠ°ΠΊ spring-boot-jarmode-layertools
ΠΠΠ ΡΠΌΠ΅ΡΡΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅:
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
ΡΠ²Π°ΠΊΠ° Π·Π°Π²ΠΈΡΠ½ΠΎΡΡ ΡΠΈΡΠ° Π²Π΅ΡΠ·ΠΈΡΠ° Π½Π΅ ΡΠ°Π΄ΡΠΆΠΈ Π‘ΠΠΠΠ‘Π₯ΠΠ’
spring-boot-loader
ΠΠ»Π°ΡΠ΅ ΠΠΠ ΡΡΠΎΠ²Π°ΡΠΈΠ²Π°ΡΠ°
snapshot-dependencies
Π±ΠΈΠ»ΠΎ ΠΊΠΎΡΡ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡ ΡΠΈΡΠ° Π²Π΅ΡΠ·ΠΈΡΠ° ΡΠ°Π΄ΡΠΆΠΈ Π‘ΠΠΠΠ‘Π₯ΠΠ’
application
ΠΊΠ»Π°ΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΈ ΡΠ΅ΡΡΡΡΠΈ
Π‘Π»ΠΎΡΠ΅Π²ΠΈ ΡΡ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½ΠΈ Ρ layers.idx
Π΄Π°ΡΠΎΡΠ΅ΠΊΡ ΡΠ΅Π΄ΠΎΡΠ»Π΅Π΄ΠΎΠΌ ΠΊΠΎΡΠΈΠΌ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ Π΄ΠΎΠ΄Π°ΡΡ Ρ ΠΠΎΡΠΊΠ΅Ρ ΡΠ»ΠΈΠΊΡ. ΠΠ²ΠΈ ΡΠ»ΠΎΡΠ΅Π²ΠΈ ΡΠ΅ ΠΊΠ΅ΡΠΈΡΠ°ΡΡ Ρ Ρ
ΠΎΡΡΡ Π½Π°ΠΊΠΎΠ½ ΠΏΡΠ²ΠΎΠ³ ΠΏΡΠ΅ΡΠ·ΠΈΠΌΠ°ΡΠ° ΡΠ΅Ρ ΡΠ΅ Π½Π΅ ΠΌΠ΅ΡΠ°ΡΡ. ΠΠ° Ρ
ΠΎΡΡ ΡΠ΅ ΠΏΡΠ΅ΡΠ·ΠΈΠΌΠ° ΡΠ°ΠΌΠΎ Π°ΠΆΡΡΠΈΡΠ°Π½ΠΈ ΡΠ»ΠΎΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅, ΡΡΠΎ ΡΠ΅ Π±ΡΠΆΠ΅ Π·Π±ΠΎΠ³ ΡΠΌΠ°ΡΠ΅Π½Π΅ Π²Π΅Π»ΠΈΡΠΈΠ½Π΅ .
ΠΠ·Π³ΡΠ°Π΄ΡΠ° ΡΠ»ΠΈΠΊΠ΅ ΡΠ° Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈΠΌΠ° ΠΈΠ·Π΄Π²ΠΎΡΠ΅Π½ΠΈΠΌ Ρ Π·Π°ΡΠ΅Π±Π½Π΅ ΡΠ»ΠΎΡΠ΅Π²Π΅
ΠΠΎΠ½Π°ΡΠ½Ρ ΡΠ»ΠΈΠΊΡ ΡΠ΅ΠΌΠΎ ΠΈΠ·Π³ΡΠ°Π΄ΠΈΡΠΈ Ρ Π΄Π²Π΅ ΡΠ°Π·Π΅ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ·Π²
Π₯Π°ΡΠ΄Π΅ Π΄Π° ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌΠΎ Π½Π°Ρ ΠΠΎΡΠΊΠ΅ΡΡΠΈΠ»Π΅ Π·Π° Π²ΠΈΡΠ΅ΡΡΠ΅ΠΏΠ΅Π½Ρ Π³ΡΠ°Π΄ΡΡ:
# 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 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
ΠΠΎΠΆΠ΅ΠΌΠΎ Π²ΠΈΠ΄Π΅ΡΠΈ Π΄Π° ΡΠ΅ ΠΠΎΡΠΊΠ΅Ρ ΡΠ»ΠΈΠΊΠ° ΠΊΡΠ΅ΠΈΡΠ°Π½Π° ΡΠ° ΠΠ-ΠΎΠΌ ΡΠ»ΠΈΠΊΠ΅, Π° Π·Π°ΡΠΈΠΌ ΠΎΠ·Π½Π°ΡΠ΅Π½Π°.
ΠΠΎΠ½Π°ΡΠ½ΠΎ, ΠΏΠΎΠΊΡΠ΅ΡΠ΅ΠΌΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΠΈΠ²Π΅ ΠΊΠ°ΠΎ ΠΈ ΡΠ°Π½ΠΈΡΠ΅ Π΄Π° Π±ΠΈΡΠΌΠΎ ΠΏΡΠ΅Π³Π»Π΅Π΄Π°Π»ΠΈ ΡΠ»ΠΎΡΠ΅Π²Π΅ ΡΠ½ΡΡΠ°Ρ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ ΠΠΎΡΠΊΠ΅Ρ ΡΠ»ΠΈΠΊΠ΅. ΠΠΎΠΆΠ΅ΠΌΠΎ Π΄Π° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΠΈΠΌΠΎ ΠΠ ΡΠ»ΠΈΠΊΠ΅ ΠΈΠ»ΠΈ ΠΎΠ·Π½Π°ΠΊΡ ΠΊΠ°ΠΎ ΡΠ»Π°Π· Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΠΈΠ²Π΅:
dive userssignup:v1
ΠΠ°ΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΠΈ Ρ ΠΈΠ·Π»Π°Π·Ρ, ΡΠ»ΠΎΡ ΠΊΠΎΡΠΈ ΡΠ°Π΄ΡΠΆΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ ΡΠ°Π΄Π° ΠΈΠΌΠ° ΡΠ°ΠΌΠΎ 11 ΠΠ, Π° Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ ΡΡ ΠΊΠ΅ΡΠΈΡΠ°Π½Π΅ Ρ ΠΎΠ΄Π²ΠΎΡΠ΅Π½ΠΈΠΌ ΡΠ»ΠΎΡΠ΅Π²ΠΈΠΌΠ°.
ΠΠ·Π΄Π²Π°ΡΠ°ΡΠ΅ ΡΠ½ΡΡΡΠ°ΡΡΠΈΡ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ ΠΎΠ΄ ΠΏΠΎΡΠ΅Π΄ΠΈΠ½Π°ΡΠ½ΠΈΡ ΡΠ»ΠΎΡΠ΅Π²Π°
ΠΠΎΠΆΠ΅ΠΌΠΎ Π΄Π°ΡΠ΅ Π΄Π° ΡΠΌΠ°ΡΠΈΠΌΠΎ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ Π½ΠΈΠ²ΠΎΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ ΠΈΠ·Π΄Π²Π°ΡΠ°ΡΠ΅ΠΌ Π±ΠΈΠ»ΠΎ ΠΊΠΎΡΠ΅ Π½Π°ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³ΠΎΡΠ΅Π½Π΅ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ Ρ ΠΏΠΎΡΠ΅Π±Π°Π½ Π½ΠΈΠ²ΠΎ ΡΠΌΠ΅ΡΡΠΎ Π΄Π° ΠΈΡ
ΠΏΠ°ΠΊΡΡΠ΅ΠΌΠΎ ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠΎΠΌ ΡΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ΠΌΠΎ ΠΈΡ
Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΠ°ΡΠΈ Ρ 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 system prune -a
ΠΡΠ΅ΠΈΡΠ°ΡΠ΅ ΡΠ»ΠΈΠΊΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° ΠΏΠΎΠΌΠΎΡΡ ΠΠΎΡΠΊΠ΅Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅:
docker build -f <Docker file name> -t <tag> .
ΠΠΈ Π³ΡΠ°Π΄ΠΈΠΌΠΎ ΡΠ»ΠΈΠΊΡ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° ΠΈΠ· ΠΈΠ·Π²ΠΎΡΠ½ΠΎΠ³ ΠΊΠΎΠ΄Π° (Π±Π΅Π· ΠΠΎΡΠΊΠ΅ΡΡΠΈΠ»Π΅-Π°):
mvn spring-boot:build-image
ΠΠΎΠ³Π»Π΅Π΄Π°ΡΡΠ΅ ΡΠ»ΠΎΡΠ΅Π²Π΅ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ. ΠΡΠ΅ Π½Π΅Π³ΠΎ ΡΡΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΠΠ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅, ΡΠ²Π΅ΡΠΈΡΠ΅ ΡΠ΅ Π΄Π° ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡΠ° ΡΠ»ΠΎΡΠ΅Π²Π°ΡΠ° ΠΎΠΌΠΎΠ³ΡΡΠ΅Π½Π° Ρ ΡΠΏΡΠΈΠ½Π³-Π±ΠΎΠΎΡ-ΠΌΠ°Π²Π΅Π½-ΠΏΠ»ΡΠ³ΠΈΠ½-Ρ:
java -Djarmode=layertools -jar application.jar list
ΠΠΊΡΡΡΠ°Ρ ΠΎΠ²Π°ΡΠ΅ ΡΠ»ΠΎΡΠ΅Π²Π° Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ. ΠΡΠ΅ Π½Π΅Π³ΠΎ ΡΡΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΠΠ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅, ΡΠ²Π΅ΡΠΈΡΠ΅ ΡΠ΅ Π΄Π° ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡΠ° ΡΠ»ΠΎΡΠ΅Π²Π°ΡΠ° ΠΎΠΌΠΎΠ³ΡΡΠ΅Π½Π° Ρ ΡΠΏΡΠΈΠ½Π³-Π±ΠΎΠΎΡ-ΠΌΠ°Π²Π΅Π½-ΠΏΠ»ΡΠ³ΠΈΠ½-Ρ:
java -Djarmode=layertools -jar application.jar extract
ΠΠΎΠ³Π»Π΅Π΄Π°ΡΡΠ΅ Π»ΠΈΡΡΡ ΡΠ»ΠΈΠΊΠ° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°
docker images
ΠΠΎΠ³Π»Π΅Π΄Π°ΡΡΠ΅ ΡΠ° Π»Π΅Π²Π΅ ΡΡΡΠ°Π½Π΅ ΡΠ½ΡΡΠ°Ρ ΡΠ»ΠΈΠΊΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° (ΡΠ²Π΅ΡΠΈΡΠ΅ ΡΠ΅ Π΄Π° ΡΠ΅ Π°Π»Π°ΡΠΊΠ° Π·Π° ΡΠΎΡΠ΅ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π°):
dive <image ID or image tag>
ΠΠ·Π²ΠΎΡ: Π²Π²Π².Ρ Π°Π±Ρ.ΡΠΎΠΌ