рд╡рд╕рдиреНрдд рдмреБрдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреБрдХреВрд▓рд┐рдд рдбрдХрд░ рдЫрд╡рд┐рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджреИ

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

рдпрд╕ рд▓реЗрдЦрд▓реЗ рд╡рд╕рдиреНрдд рдмреБрдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓рд╛рдИ рдХрдиреНрдЯреЗрдирд░рд╛рдЗрдЬ рдЧрд░реНрдиреЗ рд╡рд┐рднрд┐рдиреНрди рддрд░рд┐рдХрд╛рд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ:

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

 рдирдореВрдирд╛ рдХреЛрдб

рдпреЛ рд▓реЗрдЦ рдХрд╛рдо рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рд╕рдВрдЧ рдЫ GitHub рдорд╛ .

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

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

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

рдПрдкреНрд▓рд┐рдХреЗрд╕рдирд▓рд╛рдИ рдХрдиреНрдЯреЗрдирд░рд╛рдЗрдЬ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ рдПрдкреНрд▓рд┐рдХреЗрд╕рдирд▓рд╛рдИ рдХрдиреНрдЯреЗрдирд░ рдЫрд╡рд┐рдорд╛ рдмреЗрд░реНрдЫреМрдВ рд░ рддреНрдпреЛ рдЫрд╡рд┐ рд╕рд╛рдЭрд╛ рд░рдЬрд┐рд╕реНрдЯреНрд░реАрдорд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░реНрдЫреМрдВред рдХрдиреНрдЯреЗрдирд░ рд░рдирдЯрд╛рдЗрдорд▓реЗ рдпреЛ рдЫрд╡рд┐рд▓рд╛рдИ рд░рдЬрд┐рд╕реНрдЯреНрд░реАрдмрд╛рдЯ рдкреБрди: рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдЫ, рдпрд╕рд▓рд╛рдИ рдЕрдирдкреНрдпрд╛рдХ рдЧрд░реНрдЫ, рд░ рдпрд╕рдХреЛ рднрд┐рддреНрд░рдХреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд▓рд╛рдЙрдБрдЫред

рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреБрдЯрдХреЛ рд╕рдВрд╕реНрдХрд░рдг реи.рей рд▓реЗ OCI рдЫрд╡рд┐рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдкреНрд▓рдЧрдЗрдирд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред

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

рдХрдиреНрдЯреЗрдирд░ рдЫрд╡рд┐ рдкрд╛рд░рдВрдкрд░рд┐рдХ рддрд░рд┐рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрджреИ

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

рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдпреЛрдЧреНрдп 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рдЬрд╕рд▓реЗ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рд╕реБрдиреНрдиреЗрдЫред

рдЖрд╡реЗрджрди рдирд┐рд░реНрдорд╛рдг

рдкрд╣рд┐рд▓реЗ рддрдкрд╛рдИрдВрд▓реЗ 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

рдпрд╣рд╛рдБ рдбрд╛рдЗрдн рдЖрджреЗрд╢рдмрд╛рдЯ рдЖрдЙрдЯрдкреБрдЯрдХреЛ рдЕрдВрд╢ рд╣реЛ: 

рд╡рд╕рдиреНрдд рдмреБрдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреБрдХреВрд▓рд┐рдд рдбрдХрд░ рдЫрд╡рд┐рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджреИ

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

Buildpack рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдХрдиреНрдЯреЗрдирд░ рдЫрд╡рд┐ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджреИ

рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВ (рдирд┐рд░реНрдорд╛рдг рдкреНрдпрд╛рдХрд╣рд░реВ) рд╕реНрд░реЛрдд рдХреЛрдбрдмрд╛рдЯ рдХрдиреНрдЯреЗрдирд░ рдЫрд╡рд┐ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕реЗрд╡рд╛ (PAAS) рдкреНрд░рд╕реНрддрд╛рд╡рд╣рд░реВрдХреЛ рд░реВрдкрдорд╛ рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд░реНрдорд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрдж рд╣реЛред рдпреЛ 2011 рдорд╛ Heroku рджреНрд╡рд╛рд░рд╛ рд▓рдиреНрдЪ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ рд░ рддреНрдпрд╕рдкрдЫрд┐ рдХреНрд▓рд╛рдЙрдб рдлрд╛рдЙрдиреНрдбреНрд░реА, Google рдПрдк рдЗрдиреНрдЬрд┐рди, 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>

рдпрд╕рд▓рд╛рдИ рдЧрд░реНрди Maven рдкреНрд░рдпреЛрдЧ рдЧрд░реМрдВ 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

Jib рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдХрдиреНрдЯреЗрдирд░ рдЫрд╡рд┐ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджреИ

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

рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрджреИ 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 рдлрд╛рдЗрд▓рдХреЛ рдереЛрдХ рдмрдирд╛рдЙрдБрдЫ, рдПрдХ рдкрдЯрдХ рдорд╛рддреНрд░ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░рд┐рдиреНрдЫ рд░ рд╣реЛрд╕реНрдЯ рдкреНрд░рдгрд╛рд▓реАрдорд╛ рдХреНрдпрд╛рд╕ рдЧрд░рд┐рдиреНрдЫред

рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдЕрдкрдбреЗрдЯ рд░ рдХрдиреНрдЯреЗрдирд░ рд╢реЗрдбреНрдпреБрд▓рд┐рдЩрдХреЛ рдмреЗрд▓рд╛рдорд╛ рдПрдкреНрд▓рд┐рдХреЗрд╕рдирдХреЛ рдкрд╛рддрд▓реЛ рддрд╣ рдорд╛рддреНрд░ рддрд╛рдирд┐рдиреНрдЫред рдпрд╕ рд░реЗрдЦрд╛рдЪрд┐рддреНрд░рдорд╛ рджреЗрдЦрд╛рдЗрдПрдХреЛ рд░реВрдкрдорд╛:

рд╡рд╕рдиреНрдд рдмреБрдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреБрдХреВрд▓рд┐рдд рдбрдХрд░ рдЫрд╡рд┐рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджреИ

рдирд┐рдореНрди рдЦрдгреНрдбрд╣рд░реВрдорд╛, рд╣рд╛рдореА рд╡рд╕рдиреНрдд рдмреБрдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рдпреА рдЕрдиреБрдХреВрд▓рд┐рдд рдЫрд╡рд┐рд╣рд░реВ рдХрд╕рд░реА рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗ рднрдиреЗрд░ рд╣реЗрд░реНрдиреЗрдЫреМрдВред

Buildpack рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╡рд╕рдиреНрдд рдмреБрдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рдПрдХ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрдиреНрдЯреЗрдирд░ рдЫрд╡рд┐ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджреИ

Spring Boot 2.3 рд▓реЗ рдмрд╛рдХреНрд▓реЛ JAR рдлрд╛рдЗрд▓рдХрд╛ рднрд╛рдЧрд╣рд░реВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд╣рд╣рд░реВрдорд╛ рдирд┐рдХрд╛рд▓реЗрд░ рд▓реЗрдпрд░рд┐рдЩрд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫред рд▓реЗрдпрд░рд┐рдЩ рд╕реБрд╡рд┐рдзрд╛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рдЕрд╕рдХреНрд╖рдо рдЧрд░рд┐рдПрдХреЛ рдЫ рд░ рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреБрдЯ рдорд╛рднреЗрди рдкреНрд▓рдЧрдЗрди рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рд╕рдХреНрд╖рдо рд╣реБрдиреБрдкрд░реНрдЫ:

<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

рдпрджрд┐ рд╣рд╛рдореАрд▓реЗ рдирддрд┐рдЬрд╛рдХреЛ рдЫрд╡рд┐рдорд╛ рддрд╣рд╣рд░реВ рд╣реЗрд░реНрди рдбрд╛рдЗрдн рдЪрд▓рд╛рдпреМрдВ рднрдиреЗ, рд╣рд╛рдореАрд▓реЗ рджреЗрдЦреНрди рд╕рдХреНрдЫреМрдВ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╕рди рддрд╣ (рд░рд╛рддреЛрдорд╛ рд░реЗрдЦрд╛рдВрдХрд┐рдд) рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ рджрд╛рдпрд░рд╛рдорд╛ рд╣рд╛рдореАрд▓реЗ рдмрд╛рдХреНрд▓реЛ 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рдлрд╛рдЗрд▓ рдХреНрд░рдо рдорд╛ рддреА Docker рдЫрд╡рд┐ рдорд╛ рдердкрд┐рдиреБ рдкрд░реНрдЫред рдпреА рддрд╣рд╣рд░реВ рдкрд╣рд┐рд▓реЛ рдкреБрди: рдкреНрд░рд╛рдкреНрддрд┐ рдкрдЫрд┐ рд╣реЛрд╕реНрдЯрдорд╛ рдХреНрдпрд╛рд╕ рдЧрд░рд┐рдПрдХрд╛ рдЫрдиреН рдХрд┐рдирднрдиреЗ рддрд┐рдиреАрд╣рд░реВ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрджреИрдирдиреНред рдХреЗрд╡рд▓ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░рд┐рдПрдХреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рддрд╣ рд╣реЛрд╕реНрдЯрдорд╛ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░рд┐рдиреНрдЫ, рдЬреБрди рдЖрдХрд╛рд░ рдШрдЯреЗрдХреЛ рдХрд╛рд░рдгрд▓реЗ рдЫрд┐рдЯреЛ рдЫ .

рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд╣рд╣рд░реВрдорд╛ рдирд┐рдХрд╛рд▓рд┐рдПрдХрд╛ рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВрд╕рдБрдЧ рдЫрд╡рд┐ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрджреИ

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

рдмрд╣реБ-рдЪрд░рдг рдирд┐рд░реНрдорд╛рдгрдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореНрд░реЛ рдбрдХрд░рдлрд╛рдЗрд▓ рдкрд░рд┐рдорд╛рд░реНрдЬрди рдЧрд░реМрдВ:

# 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

рдбрдХрд░ рдлрд╛рдЗрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдХрдиреНрдЯреЗрдирд░ рдЫрд╡рд┐ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджреИ:

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

рд╣рд╛рдореА рд╕реНрд░реЛрдд рдХреЛрдбрдмрд╛рдЯ рдХрдиреНрдЯреЗрдирд░ рдЫрд╡рд┐ рдмрдирд╛рдЙрдБрдЫреМрдВ (рдбрдХрд░рдлрд╛рдЗрд▓ рдмрд┐рдирд╛):

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>

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