рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдбреЙрдХрд░ рдЫрд╡рд┐рдпрд╛рдВ рдмрдирд╛рдирд╛

рдХрдВрдЯреЗрдирд░ рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЙрд╕рдХреЗ рд╕рднреА рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдФрд░ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдкреИрдХреЗрдЬрд┐рдВрдЧ рдХрд░рдиреЗ рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рд╡рд┐рднрд┐рдиреНрди рд╡рд╛рддрд╛рд╡рд░рдгреЛрдВ рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкрд╕рдВрджреАрджрд╛ рд╕рд╛рдзрди рдмрди рдЧрдП рд╣реИрдВред

рдпрд╣ рдЖрд▓реЗрдЦ рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХрдВрдЯреЗрдирд░реАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддрд╛ рд╣реИ:

  • рдбреЙрдХрд░ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЙрдХрд░ рдЫрд╡рд┐ рдмрдирд╛рдирд╛,
  • рдХреНрд▓рд╛рдЙрдб-рдиреЗрдЯрд┐рд╡ рдмрд┐рд▓реНрдбрдкреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрд░реЛрдд рд╕реЗ OCI рдЫрд╡рд┐ рдмрдирд╛рдирд╛,
  • рдФрд░ рд╕реНрддрд░рд┐рдд рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ JAR рднрд╛рдЧреЛрдВ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рд╕реНрддрд░реЛрдВ рдореЗрдВ рдЕрд▓рдЧ рдХрд░рдХреЗ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЫрд╡рд┐ рдЕрдиреБрдХреВрд▓рдиред

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

рдпрд╣ рдЖрд▓реЗрдЦ рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рд╣реИ рдЧреАрдерд╣рдм рдкрд░ .

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

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

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

рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХрдВрдЯреЗрдирд░реАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдПрдХ рдХрдВрдЯреЗрдирд░ рдЫрд╡рд┐ рдореЗрдВ рд▓рдкреЗрдЯрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕ рдЫрд╡рд┐ рдХреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдХрдВрдЯреЗрдирд░ рд░рдирдЯрд╛рдЗрдо рдЗрд╕ рдЫрд╡рд┐ рдХреЛ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╕реЗ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕реЗ рдЕрдирдкреИрдХ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдЕрдВрджрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛рддрд╛ рд╣реИред

рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг 2.3 рдУрд╕реАрдЖрдИ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрдиреНрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

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

рдкрд╛рд░рдВрдкрд░рд┐рдХ рддрд░реАрдХреЗ рд╕реЗ рдПрдХ рдХрдВрдЯреЗрдирд░ рдЫрд╡рд┐ рдХрд╛ рдирд┐рд░реНрдорд╛рдг

рдЕрдкрдиреЗ рдбреЙрдХрд░рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреБрдЫ рдирд┐рд░реНрджреЗрд╢ рдЬреЛрдбрд╝рдХрд░ рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдбреЙрдХрд░ рдЫрд╡рд┐рдпрд╛рдВ рдмрдирд╛рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред

рд╣рдо рдкрд╣рд▓реЗ рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп JAR рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░, рдбреЙрдХрд░ рдлрд╝рд╛рдЗрд▓ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрд╡рд╢реНрдпрдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп JAR рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЖрдзрд╛рд░ JRE рдЫрд╡рд┐ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдХреЙрдкреА рдХрд░рддреЗ рд╣реИрдВред

рдЖрдЗрдП рдЕрдкрдирд╛ рд╕реНрдкреНрд░рд┐рдВрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВ рд╕реНрдкреНрд░рд┐рдВрдЧ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде 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рдЬреЛ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕реБрдиреЗрдЧрд╛ред

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдирд┐рд░реНрдорд╛рдг

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдореЗрд╡реЗрди рдпрд╛ рдЧреНрд░реИрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣рд╛рдВ рд╣рдо рдореЗрд╡реЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:

mvn clean package

рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп JAR рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддрд╛ рд╣реИред рд╣рдореЗрдВ рдбреЙрдХрд░ рдЗрдВрдЬрди рдкрд░ рдЪрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп JAR рдХреЛ рдбреЙрдХрд░ рдЫрд╡рд┐ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдПрдХ рдХрдВрдЯреЗрдирд░ рдЫрд╡рд┐ рдмрдирд╛рдирд╛

рдлрд┐рд░ рд╣рдо рдХрдорд╛рдВрдб рдЪрд▓рд╛рдХрд░ рдЗрд╕ JAR рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЛ рдбреЙрдХрд░ рдЫрд╡рд┐ рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ docker buildрдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░реВрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рдЬрд┐рд╕рдореЗрдВ рдкрд╣рд▓реЗ рдмрдирд╛рдИ рдЧрдИ Dockerfile рд╢рд╛рдорд┐рд▓ рд╣реИ:

docker build  -t usersignup:v1 .

рд╣рдо рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рд╕реВрдЪреА рдореЗрдВ рдЕрдкрдиреА рдЫрд╡рд┐ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:

docker images 

рдЙрдкрд░реЛрдХреНрдд рдХрдорд╛рдВрдб рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рд╣рдорд╛рд░реА рдЫрд╡рд┐ рд╢рд╛рдорд┐рд▓ рд╣реИ usersignupрдЖрдзрд╛рд░ рдЫрд╡рд┐ рдХреЗ рд╕рд╛рде, adoptopenjdkрд╣рдорд╛рд░реА рдбреЙрдХрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯред

REPOSITORY          TAG                 SIZE
usersignup          v1                  249MB
adoptopenjdk        11-jre-hotspot      229MB

рдПрдХ рдХрдВрдЯреЗрдирд░ рдЫрд╡рд┐ рдХреЗ рдЕрдВрджрд░ рдкрд░рддреЗрдВ рджреЗрдЦреЗрдВ

рдЖрдЗрдП рдЫрд╡рд┐ рдХреЗ рдЕрдВрджрд░ рдкрд░рддреЛрдВ рдХреЗ рдвреЗрд░ рдХреЛ рджреЗрдЦреЗрдВред рд╣рдо рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВрдЧреЗ рд╕рд╛рдзрди  рдЧреЛрддрд╛ рд▓рдЧрд╛рдирд╛, рдЗрди рдкрд░рддреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП:

dive usersignup:v1

рдпрд╣рд╛рдВ рдбрд╛рдЗрд╡ рдХрдорд╛рдВрдб рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ: 

рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдбреЙрдХрд░ рдЫрд╡рд┐рдпрд╛рдВ рдмрдирд╛рдирд╛

рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░рдд рдЫрд╡рд┐ рдЖрдХрд╛рд░ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рдмрдирд╛рддреА рд╣реИред рд╣рдо рдЕрдкрдиреЗ рдЕрдиреБрдХреВрд▓рди рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдиреБрднрд╛рдЧреЛрдВ рдореЗрдВ рдЗрд╕ рдкрд░рдд рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдмрд┐рд▓реНрдбрдкреИрдХ рдХреЗ рд╕рд╛рде рдПрдХ рдХрдВрдЯреЗрдирд░ рдЫрд╡рд┐ рдмрдирд╛рдирд╛

рдЕрд╕реЗрдВрдмрд▓реА рдкреИрдХреЗрдЬ (рдмрд┐рд▓реНрдбрдкреИрдХ) рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрдж рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрд░реЛрдд рдХреЛрдб рд╕реЗ рдПрдХ рдХрдВрдЯреЗрдирд░ рдЫрд╡рд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо (рдкреАрдПрдПрдПрд╕) рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕реЗ 2011 рдореЗрдВ рд╣реЗрд░реЛрдХреВ рджреНрд╡рд╛рд░рд╛ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рддрдм рд╕реЗ рдЗрд╕реЗ рдХреНрд▓рд╛рдЙрдб рдлрд╛рдЙрдВрдбреНрд░реА, рдЧреВрдЧрд▓ рдРрдк рдЗрдВрдЬрди, рдЧрд┐рдЯрд▓реИрдм, рдиреЗрдЯрд┐рд╡ рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЕрдкрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдбреЙрдХрд░ рдЫрд╡рд┐рдпрд╛рдВ рдмрдирд╛рдирд╛

рдХреНрд▓рд╛рдЙрдб рдмрд┐рд▓реНрдб рдкреИрдХреЗрдЬ рдХрд╛ рд▓рд╛рдн

рдЫрд╡рд┐рдпрд╛рдБ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдбрдкреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдореБрдЦреНрдп рд▓рд╛рдн рдпрд╣ рд╣реИ рдЫрд╡рд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдХреЗрдВрджреНрд░реАрдп рд░реВрдк рд╕реЗ (рдмрд┐рд▓реНрдбрд░) рдкреНрд░рдмрдВрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдмрд┐рд▓реНрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рднреА рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдкреНрд░рдЪрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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

рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдкреНрд▓рдЧрдЗрди рдмрд┐рд▓реНрдбрдкреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрд░реЛрдд рд╕реЗ рдУрд╕реАрдЖрдИ рдЫрд╡рд┐рдпрд╛рдВ рдмрдирд╛рддрд╛ рд╣реИред рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЫрд╡рд┐рдпрд╛рдБ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИрдВ 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рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдФрд░ рдПрдХ рдХрдВрдЯреЗрдирд░ рдЫрд╡рд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рдХреНрд╖реНрдпред рд╣рдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрд┐рд╕реА рднреА Dockerfiles рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

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

рдЬрд┐рдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдХрдВрдЯреЗрдирд░ рдЫрд╡рд┐ рдмрдирд╛рдирд╛

рдЬрд┐рдм Google рдХрд╛ рдПрдХ рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдг рдкреНрд▓рдЧрдЗрди рд╣реИ рдЬреЛ рд╕реНрд░реЛрдд рдХреЛрдб рд╕реЗ рдПрдХ рдХрдВрдЯреЗрдирд░ рдЫрд╡рд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡рд┐рдзрд┐ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдХреА рд╕реНрдерд╛рдкрдирд╛ jib-maven-pluginpom.xml рдореЗрдВ:

      <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

рдЖрдЙрдЯрдкреБрдЯ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдХрдВрдЯреЗрдирд░ рдЫрд╡рд┐ рдмрдирд╛рдИ рдЧрдИ рд╣реИ рдФрд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рд░рдЦреА рдЧрдИ рд╣реИред

рдЕрдиреБрдХреВрд▓рд┐рдд рдЫрд╡рд┐рдпрд╛рдБ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рдгрд╛рдПрдБ рдФрд░ рд╡рд┐рдзрд┐рдпрд╛рдБ

рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рдореБрдЦреНрдп рдХрд╛рд░рдг рд╣реИрдВ:

  • рдирд┐рд╖реНрдкрд╛рджрди: рдПрдХ рдХрдВрдЯреЗрдирд░ рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ, рдПрдХ рдХрдВрдЯреЗрдирд░ рдЫрд╡рд┐ рдХреЛ рдЫрд╡рд┐ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╕реЗ рдХрдВрдЯреЗрдирд░ рдЗрдВрдЬрди рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ рд╣реЛрд╕реНрдЯ рддрдХ рдЦреАрдВрдЪ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдирд┐рдпреЛрдЬрди рдХрд╣рддреЗ рд╣реИрдВред рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╕реЗ рдмрдбрд╝реА рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЦреАрдВрдЪрдиреЗ рд╕реЗ рдХрдВрдЯреЗрдирд░ рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╢реЗрдбреНрдпреВрд▓рд┐рдВрдЧ рд╕рдордп рдФрд░ рд╕реАрдЖрдИ рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдирд┐рд░реНрдорд╛рдг рд╣реЛрддрд╛ рд╣реИред
  • рд╕реБрд░рдХреНрд╖рд╛: рдмрдбрд╝реА рдЫрд╡рд┐рдпреЛрдВ рдореЗрдВ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝рд╛ рдХреНрд╖реЗрддреНрд░ рднреА рд╣реЛрддрд╛ рд╣реИред

рдПрдХ рдбреЙрдХрд░ рдЫрд╡рд┐ рдкрд░рддреЛрдВ рдХреЗ рдвреЗрд░ рд╕реЗ рдмрдиреА рд╣реЛрддреА рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдкрд░рдд рд╣рдорд╛рд░реЗ рдбреЙрдХрд░рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдХрдерди рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреА рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдкрд░рдд рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкрд░рдд рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдбреЗрд▓реНрдЯрд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреА рд╣реИред рдЬрдм рд╣рдо рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╕реЗ рдбреЙрдХрд░ рдЫрд╡рд┐ рдЦреАрдВрдЪрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рдкрд░рддреЛрдВ рдореЗрдВ рдЦреАрдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╣реЛрд╕реНрдЯ рдкрд░ рдХреИрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ "рдореЛрдЯрд╛ рдЬрд╛рд░" рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреИрдХреЗрдЬрд┐рдВрдЧ рдкреНрд░рд╛рд░реВрдк рдХреЗ рд░реВрдк рдореЗрдВред рдЬрдм рд╣рдо рдПрдХ рдореЛрдЯреЗ 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 рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдореЗрдВ рдЬреЛ рдорд┐рд▓рд╛, рдЙрд╕рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░рдд (рд▓рд╛рд▓ рд░рдВрдЧ рдореЗрдВ рдШрд┐рд░рд╛ рд╣реБрдЖ) рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ рд░реЗрдВрдЬ рдореЗрдВ рдмрд╣реБрдд рдЫреЛрдЯреА рд╣реИ:

рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдбреЙрдХрд░ рдЫрд╡рд┐рдпрд╛рдВ рдмрдирд╛рдирд╛

рдбреЙрдХрд░ рдХреЗ рд╕рд╛рде рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрдВрдЯреЗрдирд░ рдЫрд╡рд┐ рдмрдирд╛рдирд╛

рдорд╛рд╡реЗрди рдпрд╛ рдЧреНрд░реИрдбрд▓ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдбреЙрдХрд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрддрд░рд┐рдд рдбреЙрдХрд░ 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

рдХреЛрдИ рднреА рдирд┐рд░реНрднрд░рддрд╛ рдЬрд┐рд╕рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╕реНрдиреИрдкрд╢реЙрдЯ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ

spring-boot-loader

рдЬрд╛рд░ рд▓реЛрдбрд░ рдХреНрд▓рд╛рд╕реЗрд╕

snapshot-dependencies

рдХреЛрдИ рднреА рдирд┐рд░реНрднрд░рддрд╛ рдЬрд┐рд╕рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╕реНрдиреИрдкрд╢реЙрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИ

application

рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд░реНрдЧ рдФрд░ рд╕рдВрд╕рд╛рдзрди

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

рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░рддреЛрдВ рдореЗрдВ рдирд┐рдХрд╛рд▓реА рдЧрдИ рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЫрд╡рд┐ рдмрдирд╛рдирд╛

рд╣рдо рдирд╛рдордХ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдВрддрд┐рдо рдЫрд╡рд┐ рджреЛ рдЪрд░рдгреЛрдВ рдореЗрдВ рдмрдирд╛рдПрдВрдЧреЗ рдорд▓реНрдЯреА-рд╕реНрдЯреЗрдЬ рдЕрд╕реЗрдВрдмрд▓реА . рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ рд╣рдо рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рдирд┐рдХрд╛рд▓реЗрдВрдЧреЗ рдФрд░ рджреВрд╕рд░реЗ рдЪрд░рдг рдореЗрдВ рд╣рдо рдирд┐рдХрд╛рд▓реА рдЧрдИ рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рдЕрдВрддрд┐рдо рдЫрд╡рд┐ рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВрдЧреЗред

рдЖрдЗрдП рдорд▓реНрдЯреА-рд╕реНрдЯреЗрдЬ рдмрд┐рд▓реНрдб рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА 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 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 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 рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ рдФрд░ рдлрд┐рд░ рдбреЙрдХрд░рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдПрдХ рдХрдВрдЯреЗрдирд░ рдЫрд╡рд┐ рдореЗрдВ рдкреИрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╣рдордиреЗ рдПрдХ рд▓реЗрдпрд░рд┐рдВрдЧ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдХрдВрдЯреЗрдирд░ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдкрд░ рднреА рдзреНрдпрд╛рди рджрд┐рдпрд╛, рдЬреЛ рд╣реЛрд╕реНрдЯ рдкрд░ рдХреИрд╢ рдХреА рдЧрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░рддреЛрдВ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ рдФрд░ рдХрдВрдЯреЗрдирд░ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдЗрдВрдЬрди рдореЗрдВ рд╢реЗрдбреНрдпреВрд▓рд┐рдВрдЧ рд╕рдордп рдкрд░ рдПрдХ рдкрддрд▓реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░рдд рд▓реЛрдб рдХреА рдЬрд╛рддреА рд╣реИред

рдЖрдк рдЖрд▓реЗрдЦ рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рд╕рднреА рд╕реНрд░реЛрдд рдХреЛрдб рдпрд╣рд╛рдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ Github .

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

рдЗрд╕ рдЖрд▓реЗрдЦ рдореЗрдВ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЖрджреЗрд╢реЛрдВ рдХрд╛ рдПрдХ рддреНрд╡рд░рд┐рдд рд╡рд┐рд╡рд░рдг рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдкреНрд░рд╕рдВрдЧ рд╕рдорд╛рд╢реЛрдзрди:

docker system prune -a

Dockerfile рдХреЗ рд╕рд╛рде рдПрдХ рдХрдВрдЯреЗрдирд░ рдЫрд╡рд┐ рдмрдирд╛рдирд╛:

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

рд╕реНрд░реЛрдд рд╕реЗ рдХрдВрдЯреЗрдирд░ рдЫрд╡рд┐ рдмрдирд╛рдПрдВ (рдбреЙрдХрд░рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмрд┐рдирд╛):

mvn spring-boot:build-image

рдирд┐рд░реНрднрд░рддрд╛ рдкрд░рддреЗрдВ рджреЗрдЦреЗрдВ. рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЬрд╛рд░ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╕реНрдкреНрд░рд┐рдВрдЧ-рдмреВрдЯ-рдореЗрд╡реЗрди-рдкреНрд▓рдЧрдЗрди рдореЗрдВ рд▓реЗрдпрд░рд┐рдВрдЧ рд╕реБрд╡рд┐рдзрд╛ рд╕рдХреНрд╖рдо рд╣реИ:

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