рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирд╕рд╛рдареА рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдбреЙрдХрд░ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ

рдХрдВрдЯреЗрдирд░ рд╣реЗ рд╕рд░реНрд╡ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рдЖрдгрд┐ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡рд╛рдВрд╕рд╣ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреЕрдХреЗрдЬрд┐рдВрдЧ рдЖрдгрд┐ рдирдВрддрд░ рддреНрдпрд╛рдВрдирд╛ рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдд рд╡рд┐рддрд░рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреЗ рдкреНрд░рд╛рдзрд╛рдиреНрдп рд╕рд╛рдзрди рдмрдирд▓реЗ рдЖрд╣реЗ.

рдпрд╛ рд▓реЗрдЦрд╛рдд рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирдЪреЗ рдХрдВрдЯреЗрдирд░ рдмрдирд╡рдгреНрдпрд╛рдЪреЗ рд╡рд┐рд╡рд┐рдз рдорд╛рд░реНрдЧ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗрдд:

  • рдбреЙрдХрд░ рдлрд╛рдЗрд▓ рд╡рд╛рдкрд░реВрди рдбреЙрдХрд░ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ,
  • рдХреНрд▓рд╛рдЙрдб-рдиреЗрдЯрд┐рд╡реНрд╣ рдмрд┐рд▓реНрдбрдкреЕрдХ рд╡рд╛рдкрд░реВрди рд╕реНрддреНрд░реЛрддрд╛рд╡рд░реВрди рдУрд╕реАрдЖрдп рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ,
  • рдЖрдгрд┐ рд░рди-рдЯрд╛рдЗрдо рдЗрдореЗрдЬ рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди JAR рдЪреЗ рднрд╛рдЧ рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рд╕реНрддрд░рд╛рдВрдордзреНрдпреЗ рд╡рд┐рднрдХреНрдд рдХрд░реВрди рдорд▓реНрдЯреА-рдЯрд┐рдпрд░ рдЯреВрд▓реНрд╕ рд╡рд╛рдкрд░реВрди.

 рдХреЛрдб рдЙрджрд╛рд╣рд░рдг

рд╣рд╛ рд▓реЗрдЦ рдХрд╛рд░реНрдпрд░рдд рдХреЛрдб рдЙрджрд╛рд╣рд░рдгрд╛рд╕рд╣ рдЖрд╣реЗ GitHub рд╡рд░ .

рдХрдВрдЯреЗрдирд░ рд╢рдмреНрджрд╛рд╡рд▓реА

рдЖрдореНрд╣реА рд▓реЗрдЦрд╛рдд рд╡рд╛рдкрд░рд▓реЗрд▓реНрдпрд╛ рдХрдВрдЯреЗрдирд░ рд╢рдмреНрджрд╛рд╡рд▓реАрд╕рд╣ рдкреНрд░рд╛рд░рдВрдн рдХрд░реВ:

  • рдХрдВрдЯреЗрдирд░ рдкреНрд░рддрд┐рдорд╛: рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрд╡рд░реВрдкрд╛рдЪреА рдлрд╛рдЗрд▓. рдмрд┐рд▓реНрдб рдЯреВрд▓ рдЪрд╛рд▓рд╡реВрди рдЖрдореНрд╣реА рдЖрдордЪреНрдпрд╛ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирд▓рд╛ рдХрдВрдЯреЗрдирд░ рдЗрдореЗрдЬрдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░реВ.
  • рдХрдВрдЯреЗрдирд░: рдХрдВрдЯреЗрдирд░ рдкреНрд░рддрд┐рдореЗрдЪреЗ рдПрдХреНрдЭрд┐рдХреНрдпреБрдЯреЗрдмрд▓ рдЙрджрд╛рд╣рд░рдг.
  • рдХрдВрдЯреЗрдирд░ рдЗрдВрдЬрд┐рди: рдХрдВрдЯреЗрдирд░ рдЪрд╛рд▓рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА рдЬрдмрд╛рдмрджрд╛рд░ рдЕрд╕рд▓реЗрд▓реА рдбрд┐рдорди рдкреНрд░рдХреНрд░рд┐рдпрд╛.
  • рдХрдВрдЯреЗрдирд░ рд╣реЛрд╕реНрдЯ: рд╣реЛрд╕реНрдЯ рд╕рдВрдЧрдгрдХ рдЬреНрдпрд╛рд╡рд░ рдХрдВрдЯреЗрдирд░ рдЗрдВрдЬрд┐рди рдЪрд╛рд▓рддреЗ.
  • рдХрдВрдЯреЗрдирд░ рдиреЛрдВрджрдгреА: рдХрдВрдЯреЗрдирд░ рдкреНрд░рддрд┐рдорд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЖрдгрд┐ рд╡рд┐рддрд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗрд▓реЗ рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд╛рди.
  • OCI рдорд╛рдирдХрдУрдкрди рдХрдВрдЯреЗрдирд░ рдЗрдирд┐рд╢рд┐рдПрдЯрд┐рд╡реНрд╣ (OCI) рд▓рд┐рдирдХреНрд╕ рдлрд╛рдЙрдВрдбреЗрд╢рдирдордзреНрдпреЗ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реА рдПрдХ рд╣рд▓рдХреА, рдореБрдХреНрдд рдкреНрд░рд╢рд╛рд╕рди рд░рдЪрдирд╛ рдЖрд╣реЗ. рдУрд╕реАрдЖрдп рдЗрдореЗрдЬ рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рди рдХрдВрдЯреЗрдирд░ рдЗрдореЗрдЬ рдЖрдгрд┐ рд░рдирдЯрд╛рдЗрдо рдлреЙрд░рдореЕрдЯрд╕рд╛рдареА рдЙрджреНрдпреЛрдЧ рдорд╛рдирдХреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреА рд╕рд░реНрд╡ рдХрдВрдЯреЗрдирд░ рдЗрдВрдЬрд┐рди рдХреЛрдгрддреНрдпрд╛рд╣реА рдмрд┐рд▓реНрдб рдЯреВрд▓рджреНрд╡рд╛рд░реЗ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдХрдВрдЯреЗрдирд░ рдЗрдореЗрдЬреЗрд╕ рдЪрд╛рд▓рд╡реВ рд╢рдХрддрд╛рдд.

рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрдВрдЯреЗрдирд░реАрдХреГрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА рдЖрдордЪрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрдВрдЯреЗрдирд░ рдкреНрд░рддрд┐рдореЗрдордзреНрдпреЗ рдЧреБрдВрдбрд╛рд│рддреЛ рдЖрдгрд┐ рддреА рдкреНрд░рддрд┐рдорд╛ рд╕рд╛рдорд╛рдпрд┐рдХ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдиреЛрдВрджрдгреАрд╡рд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЛ. рдХрдВрдЯреЗрдирд░ рд░рдирдЯрд╛рдЗрдо рд╣реА рдкреНрд░рддрд┐рдорд╛ рд░реЗрдЬрд┐рд╕реНрдЯреНрд░реАрдордзреВрди рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ, рддреА рдЕрдирдкреЕрдХ рдХрд░рддреЗ рдЖрдгрд┐ рддреНрдпрд╛рдордзреНрдпреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд╛рд▓рд╡рддреЗ.

рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯрдЪреА рдЖрд╡реГрддреНрддреА 2.3 OCI рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкреНрд▓рдЧрдЗрди рдкреНрд░рджрд╛рди рдХрд░рддреЗ.

рдЧреЛрджреА рдХрд╛рдордЧрд╛рд░ рд╕рд░реНрд╡рд╛рдд рд╕рд╛рдорд╛рдиреНрдпрддрдГ рд╡рд╛рдкрд░рд▓реЗрд▓реА рдХрдВрдЯреЗрдирд░ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдЖрд╣реЗ, рдЖрдгрд┐ рдЖрдореНрд╣реА рдЖрдордЪреНрдпрд╛ рдЙрджрд╛рд╣рд░рдгрд╛рдВрдордзреНрдпреЗ рдбреЙрдХрд░ рд╡рд╛рдкрд░рддреЛ, рдореНрд╣рдгреВрди рдпрд╛ рд▓реЗрдЦрд╛рддреАрд▓ рддреНрдпрд╛рдирдВрддрд░рдЪреЗ рд╕рд░реНрд╡ рдХрдВрдЯреЗрдирд░ рд╕рдВрджрд░реНрдн рдбреЙрдХрд░рдЪрд╛ рд╕рдВрджрд░реНрдн рдШреЗрддреАрд▓.

рдкрд╛рд░рдВрдкрд╛рд░рд┐рдХ рдкрджреНрдзрддреАрдиреЗ рдХрдВрдЯреЗрдирд░ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ

рдбреЙрдХрд░ рдлрд╛рдЗрд▓рдордзреНрдпреЗ рдХрд╛рд╣реА рд╕реВрдЪрдирд╛ рдЬреЛрдбреВрди рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рд╕рд╛рдареА рдбреЙрдХрд░ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ рдЦреВрдк рд╕реЛрдкреЗ рдЖрд╣реЗ.

рдЖрдореНрд╣реА рдкреНрд░рдердо рдПрдХ рдПрдХреНрдЭрд┐рдХреНрдпреБрдЯреЗрдмрд▓ JAR рдлрд╛рдИрд▓ рддрдпрд╛рд░ рдХрд░рддреЛ рдЖрдгрд┐ рдбреЙрдХрд░ рдлрд╛рдЗрд▓ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдЪрд╛ рднрд╛рдЧ рдореНрд╣рдгреВрди, рдЖрд╡рд╢реНрдпрдХ рд╕реЗрдЯрд┐рдВрдЧреНрдЬ рд▓рд╛рдЧреВ рдХреЗрд▓реНрдпрд╛рдирдВрддрд░ рдмреЗрд╕ JRE рдЗрдореЗрдЬрдЪреНрдпрд╛ рд╡рд░ рдПрдХреНрдЭрд┐рдХреНрдпреБрдЯреЗрдмрд▓ JAR рдлрд╛рдЗрд▓ рдХреЙрдкреА рдХрд░рддреЛ.

рдЪрд▓рд╛ рдЖрдордЪреЗ рд╕реНрдкреНрд░рд┐рдВрдЧ рдНрдкреНрд▓рд┐рдХреЗрд╢рди рддрдпрд╛рд░ рдХрд░реВрдпрд╛ рд╕реНрдкреНрд░рд┐рдВрдЧ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд░ рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡рд╛рдВрд╕рд╣ weblombok╨╕ 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, рдЬреНрдпрд╛рдЪреНрдпрд╛ рд╡рд░ рдЖрдореНрд╣реА рдЖрдордЪреА JAR рдлрд╛рдИрд▓ рдХреЙрдкреА рдХрд░рддреЛ рдЖрдгрд┐ рдирдВрддрд░ рдкреЛрд░реНрдЯ рдЙрдШрдбрддреЛ, 8080рдЬреЗ рд╡рд┐рдирдВрддреНрдпрд╛ рдРрдХрддреАрд▓.

рдЕрд░реНрдЬ рддрдпрд╛рд░ рдХрд░рдгреЗ

рдкреНрд░рдердо рддреБрдореНрд╣рд╛рд▓рд╛ Maven рдХрд┐рдВрд╡рд╛ Gradle рд╡рд╛рдкрд░реВрди рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рддрдпрд╛рд░ рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓. рдпреЗрдереЗ рдЖрдореНрд╣реА Maven рд╡рд╛рдкрд░рддреЛ:

mvn clean package

рд╣реЗ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирд╕рд╛рдареА рдПрдХреНрдЭрд┐рдХреНрдпреВрдЯреЗрдмрд▓ JAR рдлрд╛рдЗрд▓ рддрдпрд╛рд░ рдХрд░рддреЗ. рдбреЙрдХрд░ рдЗрдВрдЬрд┐рдирд╡рд░ рдЪрд╛рд▓рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдореНрд╣рд╛рд▓рд╛ рд╣реЗ рдПрдХреНрдЭрд┐рдХреНрдпреБрдЯреЗрдмрд▓ JAR рдбреЙрдХрд░ рдЗрдореЗрдЬрдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓.

рдХрдВрдЯреЗрдирд░ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ

рддреНрдпрд╛рдирдВрддрд░ рдХрдорд╛рдВрдб рдЪрд╛рд▓рд╡реВрди рдЖрдореНрд╣реА рд╣реА рдПрдХреНрдЭрд┐рдХреНрдпреБрдЯреЗрдмрд▓ JAR рдлрд╛рдЗрд▓ рдбреЙрдХрд░ рдЗрдореЗрдЬрдордзреНрдпреЗ рдареЗрд╡рддреЛ 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

рдбрд╛рдпрд╡реНрд╣ рдХрдорд╛рдВрдбрдордзреАрд▓ рдЖрдЙрдЯрдкреБрдЯрдЪрд╛ рднрд╛рдЧ рдпреЗрдереЗ рдЖрд╣реЗ: 

рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирд╕рд╛рдареА рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдбреЙрдХрд░ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ

рдЬрд╕реЗ рдЖрдкрдг рдмрдШреВ рд╢рдХрддреЛ, рдНрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЗрдпрд░ рдкреНрд░рддрд┐рдорд╛ рдЖрдХрд╛рд░рд╛рдЪрд╛ рдПрдХ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рднрд╛рдЧ рдмрдирд╡рддреЗ. рдЖрдореНрд╣реА рдЖрдордЪреНрдпрд╛ рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рдирдЪрд╛ рднрд╛рдЧ рдореНрд╣рдгреВрди рдЦрд╛рд▓реАрд▓ рд╡рд┐рднрд╛рдЧрд╛рдВрдордзреНрдпреЗ рдпрд╛ рд▓реЗрдпрд░рдЪрд╛ рдЖрдХрд╛рд░ рдХрдореА рдХрд░реВ рдЗрдЪреНрдЫрд┐рддреЛ.

рдмрд┐рд▓реНрдбрдкреЕрдХ рд╡рд╛рдкрд░реВрди рдХрдВрдЯреЗрдирд░ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ

рдЕрд╕реЗрдВрдмреНрд▓реА рдкреЕрдХреЗрдЬреЗрд╕ (рдмрд┐рд▓реНрдбрдкреЕрдХреНрд╕) рд╣реА рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрдЬреНрдЮрд╛ рдЖрд╣реЗ рдЬреА рд╡рд┐рд╡рд┐рдз рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорджреНрд╡рд╛рд░реЗ рд╕реЗрд╡рд╛ рдореНрд╣рдгреВрди рд╡рд╛рдкрд░рд▓реА рдЬрд╛рддреЗ (PAAS) рд╕реНрддреНрд░реЛрдд рдХреЛрдбрдордзреВрди рдХрдВрдЯреЗрдирд░ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА. рд╣реЗ 2011 рдордзреНрдпреЗ Heroku рджреНрд╡рд╛рд░реЗ рд▓реЙрдиреНрдЪ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рд╣реЛрддреЗ рдЖрдгрд┐ рддреЗрд╡реНрд╣рд╛рдкрд╛рд╕реВрди рдХреНрд▓рд╛рдЙрдб рдлрд╛рдЙрдВрдбреНрд░реА, Google App Engine, Gitlab, Knative рдЖрдгрд┐ рдЗрддрд░ рдЕрдиреЗрдХрд╛рдВрдиреА рджрддреНрддрдХ рдШреЗрддрд▓реЗ рдЖрд╣реЗ.

рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирд╕рд╛рдареА рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдбреЙрдХрд░ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ

рдХреНрд▓рд╛рдЙрдб рдмрд┐рд▓реНрдб рдкреЕрдХреЗрдЬрдЪрд╛ рдлрд╛рдпрджрд╛

рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдмрд┐рд▓реНрдбрдкреЕрдХ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪрд╛ рдореБрдЦреНрдп рдлрд╛рдпрджрд╛ рдореНрд╣рдгрдЬреЗ рдкреНрд░рддрд┐рдорд╛ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдмрджрд▓ рдордзреНрдпрд╡рд░реНрддреА (рдмрд┐рд▓реНрдбрд░) рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд рдЖрдгрд┐ рдмрд┐рд▓реНрдбрд░ рд╡рд╛рдкрд░реВрди рд╕рд░реНрд╡ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдВрдордзреНрдпреЗ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд.

рдмрд┐рд▓реНрдб рдкреЕрдХреЗрдЬ рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╡рд░ рдШрдЯреНрдЯ рдЬреЛрдбрд▓реЗрд▓реЗ рд╣реЛрддреЗ. рдХреНрд▓рд╛рдЙрдб-рдиреЗрдЯрд┐рд╡реНрд╣ рдмрд┐рд▓реНрдбрдкреЕрдХреНрд╕ OCI рдЗрдореЗрдЬ рдлреЙрд░рдореЕрдЯрд▓рд╛ рд╕рдкреЛрд░реНрдЯ рдХрд░реВрди рд╕рд░реНрд╡ рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╡рд░ рд╕реНрдЯрдБрдбрд░реНрдбрд╛рдпрдЭреЗрд╢рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛рдд, рдЬреЗ рд╣реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рдХреА рдЗрдореЗрдЬ рдбреЙрдХрд░ рдЗрдВрдЬрд┐рдирджреНрд╡рд╛рд░реЗ рдЪрд╛рд▓рд╡рд▓реА рдЬрд╛рдК рд╢рдХрддреЗ.

рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдкреНрд▓рдЧрдЗрди рд╡рд╛рдкрд░рдгреЗ

рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдкреНрд▓рдЧрдЗрди рдмрд┐рд▓реНрдбрдкреЕрдХ рд╡рд╛рдкрд░реВрди рд╕реНрд░реЛрддрд╛рд╡рд░реВрди OCI рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рддреЗ. рд╡рд╛рдкрд░реВрди рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХреЗрд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд bootBuildImageрдХрд╛рд░реНрдпреЗ (рдЧреНрд░реЗрдбрд▓) рдХрд┐рдВрд╡рд╛ spring-boot:build-imageрд▓рдХреНрд╖реНрдп (Maven) рдЖрдгрд┐ рд╕реНрдерд╛рдирд┐рдХ рдбреЙрдХрд░ рд╕реНрдерд╛рдкрдирд╛.

рдбреЙрдХрд░ рд░реЗрдЬрд┐рд╕реНрдЯреНрд░реАрдордзреНрдпреЗ рдкреБрд╢ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдкреНрд░рддрд┐рдореЗрдЪреЗ рдирд╛рд╡ рдЖрдореНрд╣реА рдордзреНрдпреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реВрди рд╕рд╛рдиреБрдХреВрд▓рд┐рдд рдХрд░реВ рд╢рдХрддреЛ 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рдХрд╛рд░реНрдпрд░рдд OCI рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ. рдкреВрд░реНрд╡реАрдкреНрд░рдорд╛рдгреЗ, рдЖрдореНрд╣реА рдХрдорд╛рдВрдб рдЪрд╛рд▓рд╡реВрди рдбреЙрдХрд░ рдкреНрд░рддрд┐рдорд╛ рдореНрд╣рдгреВрди рд╕реВрдЪреАрдмрджреНрдз рдХреЗрд▓реЗрд▓реА рдкреНрд░рддрд┐рдорд╛ рдкрд╛рд╣реВ рд╢рдХрддреЛ:

docker images 

рдирд┐рд╖реНрдХрд░реНрд╖:

REPOSITORY                             SIZE
paketobuildpacks/run                  84.3MB
gcr.io/paketo-buildpacks/builder      652MB
pratikdas/usersignup                  257MB

Jib рд╡рд╛рдкрд░реВрди рдХрдВрдЯреЗрдирд░ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ

рдЬрд┐рдм рд╣реЗ Google рдЪреЗ рдЗрдореЗрдЬ рдХреНрд░рд┐рдПрд╢рди рдкреНрд▓рдЧрдЗрди рдЖрд╣реЗ рдЬреЗ рд╕реНрддреНрд░реЛрдд рдХреЛрдбрдордзреВрди рдХрдВрдЯреЗрдирд░ рдЗрдореЗрдЬ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкрд░реНрдпрд╛рдпреА рдкрджреНрдзрдд рдкреНрд░рджрд╛рди рдХрд░рддреЗ.

рд╕рд╛рдиреБрдХреВрд▓рд┐рдд рдХрд░рд╛ jib-maven-pluginpom.xml рдордзреНрдпреЗ:

      <plugin>
        <groupId>com.google.cloud.tools</groupId>
        <artifactId>jib-maven-plugin</artifactId>
        <version>2.5.2</version>
      </plugin>

рдкреБрдвреЗ, рдЖрдореНрд╣реА рдНрдкреНрд▓рд┐рдХреЗрд╢рди рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рдХрдВрдЯреЗрдирд░ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА Maven рдХрдорд╛рдВрдб рд╡рд╛рдкрд░реВрди Jib рдкреНрд▓рдЧрдЗрди рдЪрд╛рд▓рд╡рддреЛ. рдкреВрд░реНрд╡реАрдкреНрд░рдорд╛рдгреЗ, рдЖрдореНрд╣реА рдпреЗрдереЗ рдХреЛрдгрддреНрдпрд╛рд╣реА рдбреЙрдХрд░ рдлрд╛рдпрд▓реА рд╡рд╛рдкрд░рдд рдирд╛рд╣реА:

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

рдЖрдЙрдЯрдкреБрдЯ рджрд░реНрд╢рд╡рд┐рддреЗ рдХреА рдХрдВрдЯреЗрдирд░ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХреЗрд▓реА рдЧреЗрд▓реА рдЖрд╣реЗ рдЖрдгрд┐ рд░реЗрдЬрд┐рд╕реНрдЯреНрд░реАрдордзреНрдпреЗ рдареЗрд╡рд▓реА рдЖрд╣реЗ.

рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкреНрд░реЗрд░рдгрд╛ рдЖрдгрд┐ рддрдВрддреНрд░

рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рдирдЪреА рджреЛрди рдореБрдЦреНрдп рдХрд╛рд░рдгреЗ рдЖрд╣реЗрдд:

  • рдЙрддреНрдкрд╛рджрдХрддрд╛: рдХрдВрдЯреЗрдирд░ рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди рд╕рд┐рд╕реНрдЯрдордордзреНрдпреЗ, рдХрдВрдЯреЗрдирд░ рдЗрдореЗрдЬ рдЗрдореЗрдЬ рд░реЗрдЬрд┐рд╕реНрдЯреНрд░реАрдордзреВрди рдХрдВрдЯреЗрдирд░ рдЗрдВрдЬрд┐рди рдЪрд╛рд▓рд╡рдгрд╛рд▒реНрдпрд╛ рд╣реЛрд╕реНрдЯрдХрдбреЗ рдкрд░рдд рдорд┐рд│рд╡рд▓реА рдЬрд╛рддреЗ. рдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпреЗрд▓рд╛ рдирд┐рдпреЛрдЬрди рдореНрд╣рдгрддрд╛рдд. рд░реЗрдЬрд┐рд╕реНрдЯреНрд░реАрдордзреВрди рдореЛрдареНрдпрд╛ рдкреНрд░рддрд┐рдорд╛ рдЦреЗрдЪрд▓реНрдпрд╛рдЪрд╛ рдкрд░рд┐рдгрд╛рдо рдХрдВрдЯреЗрдирд░ рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди рд╕рд┐рд╕реНрдЯрдордордзреНрдпреЗ рд╢реЗрдбреНрдпреВрд▓рд┐рдВрдЧ рдХрд╛рд▓рд╛рд╡рдзреА рдЖрдгрд┐ CI рдкрд╛рдЗрдкрд▓рд╛рдЗрдирдордзреНрдпреЗ рджреАрд░реНрдШрдХрд╛рд│ рдирд┐рд░реНрдорд╛рдг рд╣реЛрддреЛ.
  • рд╕реБрд░рдХреНрд╖рд╛: рдореЛрдареНрдпрд╛ рдкреНрд░рддрд┐рдорд╛рдВрдордзреНрдпреЗ рднреЗрджреНрдпрддреЗрд╕рд╛рдареА рдореЛрдареЗ рдХреНрд╖реЗрддреНрд░ рджреЗрдЦреАрд▓ рдЕрд╕рддреЗ.

рдбреЙрдХрд░ рдЗрдореЗрдЬрдордзреНрдпреЗ рд▓реЗрдпрд░реНрд╕рдЪрд╛ рдПрдХ рд╕реНрдЯреЕрдХ рдЕрд╕рддреЛ, рддреНрдпрд╛рддреАрд▓ рдкреНрд░рддреНрдпреЗрдХ рдЖрдордЪреНрдпрд╛ рдбреЙрдХрд░рдлрд╛рдЗрд▓рдордзреАрд▓ рд╕реВрдЪрдирд╛ рджрд░реНрд╢рд╡рддреЗ. рдкреНрд░рддреНрдпреЗрдХ рд╕реНрддрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд▓реЗрдпрд░рдордзреАрд▓ рдмрджрд▓рд╛рдВрдЪрд╛ рдбреЗрд▓реНрдЯрд╛ рджрд░реНрд╢рд╡рддреЛ. рдЬреЗрд╡реНрд╣рд╛ рдЖрдкрдг рд░реЗрдЬрд┐рд╕реНрдЯреНрд░реАрдордзреВрди рдбреЙрдХрд░ рдЗрдореЗрдЬ рдЦреЗрдЪрддреЛ, рддреЗрд╡реНрд╣рд╛ рддреА рд▓реЗрдпрд░реНрд╕рдордзреНрдпреЗ рдЦреЗрдЪрд▓реА рдЬрд╛рддреЗ рдЖрдгрд┐ рд╣реЛрд╕реНрдЯрд╡рд░ рдХреЕрд╢реЗ рдХреЗрд▓реА рдЬрд╛рддреЗ.

рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рд╡рд╛рдкрд░рддреЛ "рдлреЕрдЯ JAR" рдордзреНрдпреЗ рдбреАрдлреЙрд▓реНрдЯ рдкреЕрдХреЗрдЬрд┐рдВрдЧ рд╕реНрд╡рд░реВрдк рдореНрд╣рдгреВрди. рдЬреЗрд╡реНрд╣рд╛ рдЖрдкрдг рдЬрд╛рдб JAR рдкрд╛рд╣рддреЛ рддреЗрд╡реНрд╣рд╛ рдЖрдкрдг рдкрд╛рд╣рддреЛ рдХреА рдНрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рдВрдкреВрд░реНрдг JAR рдЪрд╛ рдЦреВрдк рд▓рд╣рд╛рди рднрд╛рдЧ рдмрдирд╡рддреЛ. рд╣рд╛ рдЕрд╕рд╛ рднрд╛рдЧ рдЖрд╣реЗ рдЬреЛ рдмрд░реНрдпрд╛рдЪрджрд╛ рдмрджрд▓рддреЛ. рдЙрд░реНрд╡рд░рд┐рдд рд╕реНрдкреНрд░рд┐рдВрдЧ рдлреНрд░реЗрдорд╡рд░реНрдХ рдЕрд╡рд▓рдВрдмрдирд╛рдВрдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЖрд╣реЗ.

рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди рдлреЙрд░реНрдореНрдпреБрд▓рд╛ рд╕реНрдкреНрд░рд┐рдВрдЧ рдлреНрд░реЗрдорд╡рд░реНрдХ рдЕрд╡рд▓рдВрдмрдирд╛рдВрдкрд╛рд╕реВрди рд╡реЗрдЧрд│реНрдпрд╛ рд╕реНрддрд░рд╛рд╡рд░ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирд▓рд╛ рд╡реЗрдЧрд│реЗ рдХрд░рдгреНрдпрд╛рднреЛрд╡рддреА рдХреЗрдВрджреНрд░реАрдд рдЖрд╣реЗ.

рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡ рд╕реНрддрд░, рдЬреЛ рдЬрд╛рдб JAR рдлрд╛рдИрд▓рдЪрд╛ рдореЛрдард╛ рднрд╛рдЧ рдмрдирд╡рддреЛ, рдлрдХреНрдд рдПрдХрджрд╛рдЪ рдбрд╛рдЙрдирд▓реЛрдб рдХреЗрд▓рд╛ рдЬрд╛рддреЛ рдЖрдгрд┐ рд╣реЛрд╕реНрдЯ рд╕рд┐рд╕реНрдЯрдорд╡рд░ рдХреЕрд╢реЗ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ.

рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЕрджреНрдпрддрдиреЗ рдЖрдгрд┐ рдХрдВрдЯреЗрдирд░ рд╢реЗрдбреНрдпреВрд▓рд┐рдВрдЧ рджрд░рдореНрдпрд╛рди рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдЪрд╛ рдлрдХреНрдд рдПрдХ рдкрд╛рддрд│ рдерд░ рдУрдврд▓рд╛ рдЬрд╛рддреЛ. рдпрд╛ рдЪрд┐рддреНрд░рд╛рдд рджрд╛рдЦрд╡рд▓реНрдпрд╛рдкреНрд░рдорд╛рдгреЗ:

рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирд╕рд╛рдареА рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдбреЙрдХрд░ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ

рдкреБрдвреАрд▓ рд╡рд┐рднрд╛рдЧрд╛рдВрдордзреНрдпреЗ, рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирд╕рд╛рдареА рдпрд╛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкреНрд░рддрд┐рдорд╛ рдХрд╢рд╛ рддрдпрд╛рд░ рдХрд░рд╛рдпрдЪреНрдпрд╛ рддреЗ рдЖрдореНрд╣реА рдкрд╛рд╣реВ.

рдмрд┐рд▓реНрдбрдкреЕрдХ рд╡рд╛рдкрд░реВрди рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирд╕рд╛рдареА рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭреНрдб рдХрдВрдЯреЗрдирд░ рдЗрдореЗрдЬ рддрдпрд╛рд░ рдХрд░рдгреЗ

рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ 2.3 рдЬрд╛рдб JAR рдлрд╛рдИрд▓рдЪреЗ рднрд╛рдЧ рд╡реЗрдЧрд│реЗ рд▓реЗрдпрд░рдордзреНрдпреЗ рдХрд╛рдвреВрди рд▓реЗрдпрд░рд┐рдВрдЧрд▓рд╛ рд╕рдорд░реНрдерди рджреЗрддреЗ. рд▓реЗрдпрд░рд┐рдВрдЧ рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░ рдЕрдХреНрд╖рдо рдХреЗрд▓реЗ рдЖрд╣реЗ рдЖрдгрд┐ рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдореЕрд╡реЗрди рдкреНрд▓рдЧрдЗрди рд╡рд╛рдкрд░реВрди рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рд╕рдХреНрд╖рдо рдХреЗрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ:

<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

рдкрд░рд┐рдгрд╛рдореА рдкреНрд░рддрд┐рдореЗрддреАрд▓ рд▓реЗрдпрд░реНрд╕ рдкрд╛рд╣рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдореНрд╣реА рдбрд╛рдпрд╡реНрд╣ рдЪрд╛рд▓рд╡рд▓реНрдпрд╛рд╕, рдЖрдореНрд╣реА рдЬрд╛рдб JAR рдлреЙрд░рдореЕрдЯ рд╡рд╛рдкрд░реВрди рдорд┐рд│рд╛рд▓реЗрд▓реНрдпрд╛ рддреБрд▓рдиреЗрдд рдНрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЗрдпрд░ (рд▓рд╛рд▓ рд░рдВрдЧрд╛рдд рд░реЗрдЦрд╛рдВрдХрд┐рдд) рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ рд╢реНрд░реЗрдгреАрдордзреНрдпреЗ рдЦреВрдкрдЪ рд▓рд╣рд╛рди рдЕрд╕рд▓реНрдпрд╛рдЪреЗ рдкрд╛рд╣реВ рд╢рдХрддреЛ:

рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирд╕рд╛рдареА рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдбреЙрдХрд░ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ

рдбреЙрдХрд░ рд╡рд╛рдкрд░реВрди рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирд╕рд╛рдареА рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭреНрдб рдХрдВрдЯреЗрдирд░ рдЗрдореЗрдЬ рддрдпрд╛рд░ рдХрд░рдгреЗ

Maven рдХрд┐рдВрд╡рд╛ Gradle рдкреНрд▓рдЧрдЗрди рд╡рд╛рдкрд░рдгреНрдпрд╛рдРрд╡рдЬреА, рдЖрдореНрд╣реА рдбреЙрдХрд░ рдлрд╛рдЗрд▓рд╕рд╣ рдПрдХ рд╕реНрддрд░рд┐рдд рдбреЙрдХрд░ JAR рдкреНрд░рддрд┐рдорд╛ рджреЗрдЦреАрд▓ рддрдпрд╛рд░ рдХрд░реВ рд╢рдХрддреЛ.

рдЬреЗрд╡реНрд╣рд╛ рдЖрдореНрд╣реА рдбреЙрдХрд░ рд╡рд╛рдкрд░рддреЛ, рддреЗрд╡реНрд╣рд╛ рдЖрдореНрд╣рд╛рд▓рд╛ рд▓реЗрдпрд░реНрд╕ рдХрд╛рдврдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рддреНрдпрд╛рдВрдирд╛ рдЕрдВрддрд┐рдо рдкреНрд░рддрд┐рдореЗрдордзреНрдпреЗ рдХреЙрдкреА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рджреЛрди рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд╛рдпрд▒реНрдпрд╛ рдкрд╛рд░ рдкрд╛рдбрд╛рд╡реНрдпрд╛ рд▓рд╛рдЧрддреАрд▓.

рд▓реЗрдпрд░рд┐рдВрдЧ рд╕рдХреНрд╖рдо рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдореЕрд╡реЗрди рд╡рд╛рдкрд░реВрди рддрдпрд╛рд░ рдХреЗрд▓реНрдпрд╛рдирдВрддрд░ рдкрд░рд┐рдгрд╛рдореА 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

рдЖрдЙрдЯрдкреБрдЯ рдХрдорд╛рдВрдбреНрд╕ рджрд╛рдЦрд╡рддреЗ listextract╨╕ 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рдлрд╛рдИрд▓ рддреНрдпрд╛ рдХреНрд░рдорд╛рдиреЗ рдбреЙрдХрд░ рдЗрдореЗрдЬрдордзреНрдпреЗ рдЬреЛрдбрд▓реНрдпрд╛ рдЬрд╛рд╡реНрдпрд╛рдд. рд╣реЗ рд╕реНрддрд░ рдкрд╣рд┐рд▓реНрдпрд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддреАрдирдВрддрд░ рд╣реЛрд╕реНрдЯрдордзреНрдпреЗ рдХреЕрд╢реЗ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд рдХрд╛рд░рдг рддреЗ рдмрджрд▓рдд рдирд╛рд╣реАрдд. рдХреЗрд╡рд│ рдЕрджреНрдпрдпрд╛рд╡рдд рдНрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрддрд░ рд╣реЛрд╕реНрдЯрд╡рд░ рдбрд╛рдЙрдирд▓реЛрдб рдХреЗрд▓рд╛ рдЬрд╛рддреЛ, рдЬреЛ рдХрдореА рдЖрдХрд╛рд░рд╛рдореБрд│реЗ рдЬрд▓рдж рдЖрд╣реЗ .

рд╡рд┐рднрдХреНрдд рд╕реНрддрд░рд╛рдВрдордзреНрдпреЗ рдХрд╛рдврд▓реЗрд▓реНрдпрд╛ рдЕрд╡рд▓рдВрдмрдирд╛рдВрд╕рд╣ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ

рдирд╛рд╡рд╛рдЪреА рдкрджреНрдзрдд рд╡рд╛рдкрд░реВрди рдЖрдореНрд╣реА рджреЛрди рдЯрдкреНрдкреНрдпрд╛рдд рдЕрдВрддрд┐рдо рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░реВ рдорд▓реНрдЯреА-рд╕реНрдЯреЗрдЬ рдЕрд╕реЗрдВрдмреНрд▓реА . рдкрд╣рд┐рд▓реНрдпрд╛ рдЪрд░рдгрд╛рдд рдЖрдкрдг рдЕрд╡рд▓рдВрдмрди рдХрд╛рдвреВ рдЖрдгрд┐ рджреБрд╕рд▒реНрдпрд╛ рдЪрд░рдгрд╛рдд рдЖрдкрдг рдХрд╛рдврд▓реЗрд▓реНрдпрд╛ рдЕрд╡рд▓рдВрдмрдирд╛рдВрдирд╛ рдЕрдВрддрд┐рдо рдкреНрд░рддрд┐рдореЗрдордзреНрдпреЗ рдХреЙрдкреА рдХрд░реВ.

рдорд▓реНрдЯреА-рд╕реНрдЯреЗрдЬ рдмрд┐рд▓реНрдбрд╕рд╛рдареА рдЖрдордЪреА рдбреЙрдХрд░рдлрд╛рдЗрд▓ рд╕реБрдзрд╛рд░рд┐рдд рдХрд░реВ:

# 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 рдХрдорд╛рдВрдб рдЪрд╛рд▓рд╡рддреЛ. рдбрд╛рдпрд╡реНрд╣ рдХрдорд╛рдВрдбрд▓рд╛ рдЗрдирдкреБрдЯ рдореНрд╣рдгреВрди рдЖрдореНрд╣реА рдЗрдореЗрдЬ рдЖрдпрдбреА рдХрд┐рдВрд╡рд╛ рдЯреЕрдЧ рджреЗрдК рд╢рдХрддреЛ:

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рд╕рд╛рдорд╛рдпрд┐рдХ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдордзреВрди рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХреЗрд▓реЗрд▓реА рд╕рдВрд╕реНрдерд╛ рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡ рд╕рдорд╛рд╡рд┐рд╖реНрдЯреАрдд рдЖрд╣реЗ.

рдирд┐рд╖реНрдХрд░реНрд╖

рдпрд╛ рд▓реЗрдЦрд╛рдд, рдЖрдореНрд╣реА рдереЗрдЯ рд╕реНрддреНрд░реЛрдд рдХреЛрдбрд╡рд░реВрди рдХрдВрдЯреЗрдирд░ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреНрд▓рд╛рдЙрдб-рдиреЗрдЯрд┐рд╡реНрд╣ рдмрд┐рд▓реНрдбрдкреЕрдХ рд╡рд╛рдкрд░рдгреНрдпрд╛рдХрдбреЗ рдкрд╛рд╣рд┐рд▓реЗ. рдиреЗрд╣рдореАрдЪреНрдпрд╛ рдкрджреНрдзрддреАрдиреЗ рдХрдВрдЯреЗрдирд░ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдбреЙрдХрд░ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪрд╛ рд╣рд╛ рдкрд░реНрдпрд╛рдп рдЖрд╣реЗ: рдкреНрд░рдердо рдЬрд╛рдб рдПрдХреНрдЭрд┐рдХреНрдпреБрдЯреЗрдмрд▓ JAR рдлрд╛рдИрд▓ рддрдпрд╛рд░ рдХрд░рд╛ рдЖрдгрд┐ рдирдВрддрд░ рдбреЙрдХрд░ рдлрд╛рдЗрд▓рдордзреНрдпреЗ рд╕реВрдЪрдирд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реВрди рдХрдВрдЯреЗрдирд░ рдЗрдореЗрдЬрдордзреНрдпреЗ рдкреЕрдХреЗрдЬ рдХрд░рд╛.

рдЖрдореНрд╣реА рдПрдХ рд▓реЗрдпрд░рд┐рдВрдЧ рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рд╕рдХреНрд╖рдо рдХрд░реВрди рдЖрдордЪреЗ рдХрдВрдЯреЗрдирд░ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХрд░рдгреНрдпрд╛рдХрдбреЗ рджреЗрдЦреАрд▓ рдкрд╛рд╣рд┐рд▓реЗ рдЬреЗ рд╣реЛрд╕реНрдЯрд╡рд░ рдХреЕрд╢реЗ рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╡реЗрдЧрд│реНрдпрд╛ рд╕реНрддрд░рд╛рдВрдордзреНрдпреЗ рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡ рдХрд╛рдврддреЗ рдЖрдгрд┐ рдХрдВрдЯреЗрдирд░рдЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдЗрдВрдЬрд┐рдирдордзреНрдпреЗ рд╢реЗрдбреНрдпреВрд▓рд┐рдВрдЧ рд╡реЗрд│реЗрд╡рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдЪрд╛ рдкрд╛рддрд│ рдерд░ рд▓реЛрдб рдХреЗрд▓рд╛ рдЬрд╛рддреЛ.

рд▓реЗрдЦрд╛рдд рд╡рд╛рдкрд░рд▓реЗрд▓реЗ рд╕рд░реНрд╡ рд╕реНрддреНрд░реЛрдд рдХреЛрдб рддреБрдореНрд╣рд╛рд▓рд╛ рдпреЗрдереЗ рд╕рд╛рдкрдбрддреАрд▓ рдЬрд┐рдереВрдм .

рдЖрджреЗрд╢ рд╕рдВрджрд░реНрдн

рдЖрдореНрд╣реА рдпрд╛ рд▓реЗрдЦрд╛рдд рд╡рд╛рдкрд░рд▓реЗрд▓реНрдпрд╛ рдХрдорд╛рдВрдбреНрд╕рдЪрд╛ рдПрдХ рджреНрд░реБрдд рд░рдирдбрд╛рдЙрди рдпреЗрдереЗ рдЖрд╣реЗ.

рд╕рдВрджрд░реНрдн рд╕рд╛рдл рдХрд░рдгреЗ:

docker system prune -a

рдбреЙрдХрд░ рдлрд╛рдЗрд▓ рд╡рд╛рдкрд░реВрди рдХрдВрдЯреЗрдирд░ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ:

docker build -f <Docker file name> -t <tag> .

рдЖрдореНрд╣реА рд╕реНрддреНрд░реЛрдд рдХреЛрдбрдордзреВрди рдХрдВрдЯреЗрдирд░ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рддреЛ (рдбреЙрдХрд░рдлрд╛рдЗрд▓рд╢рд┐рд╡рд╛рдп):

mvn spring-boot:build-image

рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡ рд╕реНрддрд░ рдкрд╣рд╛. рдНрдкреНрд▓рд┐рдХреЗрд╢рди JAR рдлрд╛рдЗрд▓ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА, рд╕реНрдкреНрд░рд┐рдВрдЧ-рдмреВрдЯ-рдорд╛рд╡реЗрди-рдкреНрд▓рдЧрдЗрдирдордзреНрдпреЗ рд▓реЗрдпрд░рд┐рдВрдЧ рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рд╕рдХреНрд╖рдо рдЕрд╕рд▓реНрдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд░рд╛:

java -Djarmode=layertools -jar application.jar list

рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡ рд╕реНрддрд░ рдХрд╛рдврдд рдЖрд╣реЗ. рдНрдкреНрд▓рд┐рдХреЗрд╢рди JAR рдлрд╛рдЗрд▓ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА, рд╕реНрдкреНрд░рд┐рдВрдЧ-рдмреВрдЯ-рдорд╛рд╡реЗрди-рдкреНрд▓рдЧрдЗрдирдордзреНрдпреЗ рд▓реЗрдпрд░рд┐рдВрдЧ рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рд╕рдХреНрд╖рдо рдЕрд╕рд▓реНрдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд░рд╛:

 java -Djarmode=layertools -jar application.jar extract

рдХрдВрдЯреЗрдирд░ рдкреНрд░рддрд┐рдорд╛рдВрдЪреА рд╕реВрдЪреА рдкрд╣рд╛

docker images

рдХрдВрдЯреЗрдирд░ рдкреНрд░рддрд┐рдореЗрдЪреНрдпрд╛ рдЖрдд рдбрд╛рд╡реАрдХрдбреЗ рдкрд╣рд╛ (рдбрд╛рдпрд╡реНрд╣ рдЯреВрд▓ рд╕реНрдерд╛рдкрд┐рдд рдЕрд╕рд▓реНрдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд░рд╛):

dive <image ID or image tag>

рд╕реНрддреНрд░реЛрдд: www.habr.com