рдХрдВрдЯреЗрдирд░ рд╣реЗ рд╕рд░реНрд╡ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рдЖрдгрд┐ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡рд╛рдВрд╕рд╣ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреЕрдХреЗрдЬрд┐рдВрдЧ рдЖрдгрд┐ рдирдВрддрд░ рддреНрдпрд╛рдВрдирд╛ рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдд рд╡рд┐рддрд░рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреЗ рдкреНрд░рд╛рдзрд╛рдиреНрдп рд╕рд╛рдзрди рдмрдирд▓реЗ рдЖрд╣реЗ.
рдпрд╛ рд▓реЗрдЦрд╛рдд рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирдЪреЗ рдХрдВрдЯреЗрдирд░ рдмрдирд╡рдгреНрдпрд╛рдЪреЗ рд╡рд┐рд╡рд┐рдз рдорд╛рд░реНрдЧ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗрдд:
- рдбреЙрдХрд░ рдлрд╛рдЗрд▓ рд╡рд╛рдкрд░реВрди рдбреЙрдХрд░ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ,
- рдХреНрд▓рд╛рдЙрдб-рдиреЗрдЯрд┐рд╡реНрд╣ рдмрд┐рд▓реНрдбрдкреЕрдХ рд╡рд╛рдкрд░реВрди рд╕реНрддреНрд░реЛрддрд╛рд╡рд░реВрди рдУрд╕реАрдЖрдп рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ,
- рдЖрдгрд┐ рд░рди-рдЯрд╛рдЗрдо рдЗрдореЗрдЬ рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди JAR рдЪреЗ рднрд╛рдЧ рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рд╕реНрддрд░рд╛рдВрдордзреНрдпреЗ рд╡рд┐рднрдХреНрдд рдХрд░реВрди рдорд▓реНрдЯреА-рдЯрд┐рдпрд░ рдЯреВрд▓реНрд╕ рд╡рд╛рдкрд░реВрди.
рдХреЛрдб рдЙрджрд╛рд╣рд░рдг
рд╣рд╛ рд▓реЗрдЦ рдХрд╛рд░реНрдпрд░рдд рдХреЛрдб рдЙрджрд╛рд╣рд░рдгрд╛рд╕рд╣ рдЖрд╣реЗ
рдХрдВрдЯреЗрдирд░ рд╢рдмреНрджрд╛рд╡рд▓реА
рдЖрдореНрд╣реА рд▓реЗрдЦрд╛рдд рд╡рд╛рдкрд░рд▓реЗрд▓реНрдпрд╛ рдХрдВрдЯреЗрдирд░ рд╢рдмреНрджрд╛рд╡рд▓реАрд╕рд╣ рдкреНрд░рд╛рд░рдВрдн рдХрд░реВ:
- рдХрдВрдЯреЗрдирд░ рдкреНрд░рддрд┐рдорд╛: рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрд╡рд░реВрдкрд╛рдЪреА рдлрд╛рдЗрд▓. рдмрд┐рд▓реНрдб рдЯреВрд▓ рдЪрд╛рд▓рд╡реВрди рдЖрдореНрд╣реА рдЖрдордЪреНрдпрд╛ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирд▓рд╛ рдХрдВрдЯреЗрдирд░ рдЗрдореЗрдЬрдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░реВ.
- рдХрдВрдЯреЗрдирд░: рдХрдВрдЯреЗрдирд░ рдкреНрд░рддрд┐рдореЗрдЪреЗ рдПрдХреНрдЭрд┐рдХреНрдпреБрдЯреЗрдмрд▓ рдЙрджрд╛рд╣рд░рдг.
- рдХрдВрдЯреЗрдирд░ рдЗрдВрдЬрд┐рди: рдХрдВрдЯреЗрдирд░ рдЪрд╛рд▓рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА рдЬрдмрд╛рдмрджрд╛рд░ рдЕрд╕рд▓реЗрд▓реА рдбрд┐рдорди рдкреНрд░рдХреНрд░рд┐рдпрд╛.
- рдХрдВрдЯреЗрдирд░ рд╣реЛрд╕реНрдЯ: рд╣реЛрд╕реНрдЯ рд╕рдВрдЧрдгрдХ рдЬреНрдпрд╛рд╡рд░ рдХрдВрдЯреЗрдирд░ рдЗрдВрдЬрд┐рди рдЪрд╛рд▓рддреЗ.
- рдХрдВрдЯреЗрдирд░ рдиреЛрдВрджрдгреА: рдХрдВрдЯреЗрдирд░ рдкреНрд░рддрд┐рдорд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЖрдгрд┐ рд╡рд┐рддрд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗрд▓реЗ рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд╛рди.
- OCI рдорд╛рдирдХ:
рдУрдкрди рдХрдВрдЯреЗрдирд░ рдЗрдирд┐рд╢рд┐рдПрдЯрд┐рд╡реНрд╣ (OCI) рд▓рд┐рдирдХреНрд╕ рдлрд╛рдЙрдВрдбреЗрд╢рдирдордзреНрдпреЗ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реА рдПрдХ рд╣рд▓рдХреА, рдореБрдХреНрдд рдкреНрд░рд╢рд╛рд╕рди рд░рдЪрдирд╛ рдЖрд╣реЗ. рдУрд╕реАрдЖрдп рдЗрдореЗрдЬ рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рди рдХрдВрдЯреЗрдирд░ рдЗрдореЗрдЬ рдЖрдгрд┐ рд░рдирдЯрд╛рдЗрдо рдлреЙрд░рдореЕрдЯрд╕рд╛рдареА рдЙрджреНрдпреЛрдЧ рдорд╛рдирдХреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреА рд╕рд░реНрд╡ рдХрдВрдЯреЗрдирд░ рдЗрдВрдЬрд┐рди рдХреЛрдгрддреНрдпрд╛рд╣реА рдмрд┐рд▓реНрдб рдЯреВрд▓рджреНрд╡рд╛рд░реЗ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдХрдВрдЯреЗрдирд░ рдЗрдореЗрдЬреЗрд╕ рдЪрд╛рд▓рд╡реВ рд╢рдХрддрд╛рдд.
рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрдВрдЯреЗрдирд░реАрдХреГрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА рдЖрдордЪрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрдВрдЯреЗрдирд░ рдкреНрд░рддрд┐рдореЗрдордзреНрдпреЗ рдЧреБрдВрдбрд╛рд│рддреЛ рдЖрдгрд┐ рддреА рдкреНрд░рддрд┐рдорд╛ рд╕рд╛рдорд╛рдпрд┐рдХ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдиреЛрдВрджрдгреАрд╡рд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЛ. рдХрдВрдЯреЗрдирд░ рд░рдирдЯрд╛рдЗрдо рд╣реА рдкреНрд░рддрд┐рдорд╛ рд░реЗрдЬрд┐рд╕реНрдЯреНрд░реАрдордзреВрди рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ, рддреА рдЕрдирдкреЕрдХ рдХрд░рддреЗ рдЖрдгрд┐ рддреНрдпрд╛рдордзреНрдпреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд╛рд▓рд╡рддреЗ.
рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯрдЪреА рдЖрд╡реГрддреНрддреА 2.3 OCI рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкреНрд▓рдЧрдЗрди рдкреНрд░рджрд╛рди рдХрд░рддреЗ.
рдкрд╛рд░рдВрдкрд╛рд░рд┐рдХ рдкрджреНрдзрддреАрдиреЗ рдХрдВрдЯреЗрдирд░ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ
рдбреЙрдХрд░ рдлрд╛рдЗрд▓рдордзреНрдпреЗ рдХрд╛рд╣реА рд╕реВрдЪрдирд╛ рдЬреЛрдбреВрди рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рд╕рд╛рдареА рдбреЙрдХрд░ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ рдЦреВрдк рд╕реЛрдкреЗ рдЖрд╣реЗ.
рдЖрдореНрд╣реА рдкреНрд░рдердо рдПрдХ рдПрдХреНрдЭрд┐рдХреНрдпреБрдЯреЗрдмрд▓ JAR рдлрд╛рдИрд▓ рддрдпрд╛рд░ рдХрд░рддреЛ рдЖрдгрд┐ рдбреЙрдХрд░ рдлрд╛рдЗрд▓ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдЪрд╛ рднрд╛рдЧ рдореНрд╣рдгреВрди, рдЖрд╡рд╢реНрдпрдХ рд╕реЗрдЯрд┐рдВрдЧреНрдЬ рд▓рд╛рдЧреВ рдХреЗрд▓реНрдпрд╛рдирдВрддрд░ рдмреЗрд╕ JRE рдЗрдореЗрдЬрдЪреНрдпрд╛ рд╡рд░ рдПрдХреНрдЭрд┐рдХреНрдпреБрдЯреЗрдмрд▓ JAR рдлрд╛рдЗрд▓ рдХреЙрдкреА рдХрд░рддреЛ.
рдЪрд▓рд╛ рдЖрдордЪреЗ рд╕реНрдкреНрд░рд┐рдВрдЧ рдНрдкреНрд▓рд┐рдХреЗрд╢рди рддрдпрд╛рд░ рдХрд░реВрдпрд╛ web
, lombok
╨╕ actuator
. рдПрдкреАрдЖрдп рдкреНрд░рджрд╛рди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдореНрд╣реА рд╡рд┐рд╢реНрд░рд╛рдВрддреА рдирд┐рдпрдВрддреНрд░рдХ рджреЗрдЦреАрд▓ рдЬреЛрдбрдд рдЖрд╣реЛрдд GET
рдкрджреНрдзрдд
рдбреЙрдХрд░рдлрд╛рдЗрд▓ рддрдпрд╛рд░ рдХрд░рдгреЗ
рддреНрдпрд╛рдирдВрддрд░ рдЖрдореНрд╣реА рд╣рд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЬреЛрдбреВрди рдХрдВрдЯреЗрдирд░рд╛рдЗрдЬ рдХрд░рддреЛ Dockerfile
:
FROM adoptopenjdk:11-jre-hotspot
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} application.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/application.jar"]
рдЖрдордЪреНрдпрд╛ рдбреЙрдХрд░ рдлрд╛рдЗрд▓рдордзреНрдпреЗ рдореВрд│ рдкреНрд░рддрд┐рдорд╛ рдЖрд╣реЗ adoptopenjdk
, рдЬреНрдпрд╛рдЪреНрдпрд╛ рд╡рд░ рдЖрдореНрд╣реА рдЖрдордЪреА 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
рдбрд╛рдпрд╡реНрд╣ рдХрдорд╛рдВрдбрдордзреАрд▓ рдЖрдЙрдЯрдкреБрдЯрдЪрд╛ рднрд╛рдЧ рдпреЗрдереЗ рдЖрд╣реЗ:
рдЬрд╕реЗ рдЖрдкрдг рдмрдШреВ рд╢рдХрддреЛ, рдНрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЗрдпрд░ рдкреНрд░рддрд┐рдорд╛ рдЖрдХрд╛рд░рд╛рдЪрд╛ рдПрдХ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рднрд╛рдЧ рдмрдирд╡рддреЗ. рдЖрдореНрд╣реА рдЖрдордЪреНрдпрд╛ рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рдирдЪрд╛ рднрд╛рдЧ рдореНрд╣рдгреВрди рдЦрд╛рд▓реАрд▓ рд╡рд┐рднрд╛рдЧрд╛рдВрдордзреНрдпреЗ рдпрд╛ рд▓реЗрдпрд░рдЪрд╛ рдЖрдХрд╛рд░ рдХрдореА рдХрд░реВ рдЗрдЪреНрдЫрд┐рддреЛ.
рдмрд┐рд▓реНрдбрдкреЕрдХ рд╡рд╛рдкрд░реВрди рдХрдВрдЯреЗрдирд░ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ
рдХреНрд▓рд╛рдЙрдб рдмрд┐рд▓реНрдб рдкреЕрдХреЗрдЬрдЪрд╛ рдлрд╛рдпрджрд╛
рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдмрд┐рд▓реНрдбрдкреЕрдХ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪрд╛ рдореБрдЦреНрдп рдлрд╛рдпрджрд╛ рдореНрд╣рдгрдЬреЗ рдкреНрд░рддрд┐рдорд╛ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдмрджрд▓ рдордзреНрдпрд╡рд░реНрддреА (рдмрд┐рд▓реНрдбрд░) рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд рдЖрдгрд┐ рдмрд┐рд▓реНрдбрд░ рд╡рд╛рдкрд░реВрди рд╕рд░реНрд╡ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдВрдордзреНрдпреЗ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд.
рдмрд┐рд▓реНрдб рдкреЕрдХреЗрдЬ рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╡рд░ рдШрдЯреНрдЯ рдЬреЛрдбрд▓реЗрд▓реЗ рд╣реЛрддреЗ. рдХреНрд▓рд╛рдЙрдб-рдиреЗрдЯрд┐рд╡реНрд╣ рдмрд┐рд▓реНрдбрдкреЕрдХреНрд╕ 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-plugin
pom.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 рдлрд╛рдИрд▓рдЪрд╛ рдореЛрдард╛ рднрд╛рдЧ рдмрдирд╡рддреЛ, рдлрдХреНрдд рдПрдХрджрд╛рдЪ рдбрд╛рдЙрдирд▓реЛрдб рдХреЗрд▓рд╛ рдЬрд╛рддреЛ рдЖрдгрд┐ рд╣реЛрд╕реНрдЯ рд╕рд┐рд╕реНрдЯрдорд╡рд░ рдХреЕрд╢реЗ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ.
рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЕрджреНрдпрддрдиреЗ рдЖрдгрд┐ рдХрдВрдЯреЗрдирд░ рд╢реЗрдбреНрдпреВрд▓рд┐рдВрдЧ рджрд░рдореНрдпрд╛рди рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдЪрд╛ рдлрдХреНрдд рдПрдХ рдкрд╛рддрд│ рдерд░ рдУрдврд▓рд╛ рдЬрд╛рддреЛ. рдпрд╛ рдЪрд┐рддреНрд░рд╛рдд рджрд╛рдЦрд╡рд▓реНрдпрд╛рдкреНрд░рдорд╛рдгреЗ:
рдкреБрдвреАрд▓ рд╡рд┐рднрд╛рдЧрд╛рдВрдордзреНрдпреЗ, рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирд╕рд╛рдареА рдпрд╛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкреНрд░рддрд┐рдорд╛ рдХрд╢рд╛ рддрдпрд╛рд░ рдХрд░рд╛рдпрдЪреНрдпрд╛ рддреЗ рдЖрдореНрд╣реА рдкрд╛рд╣реВ.
рдмрд┐рд▓реНрдбрдкреЕрдХ рд╡рд╛рдкрд░реВрди рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирд╕рд╛рдареА рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭреНрдб рдХрдВрдЯреЗрдирд░ рдЗрдореЗрдЬ рддрдпрд╛рд░ рдХрд░рдгреЗ
рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ 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
рдЖрдЙрдЯрдкреБрдЯ рдХрдорд╛рдВрдбреНрд╕ рджрд╛рдЦрд╡рддреЗ list
, extract
╨╕ help
╤Б help
рдбреАрдлреЙрд▓реНрдЯ рд╡реНрд╣рд╛. рд╕рд╣ рдХрдорд╛рдВрдб рдЪрд╛рд▓рд╡реВ list
рдкрд░реНрдпрд╛рдп:
java -Djarmode=layertools -jar target/usersignup-0.0.1-SNAPSHOT.jar list
dependencies
spring-boot-loader
snapshot-dependencies
application
рдЖрдореНрд╣реА рдЕрд╡рд▓рдВрдмрдирд╛рдВрдЪреА рд╕реВрдЪреА рдкрд╛рд╣рддреЛ рдЬреА рд╕реНрддрд░ рдореНрд╣рдгреВрди рдЬреЛрдбрд▓реА рдЬрд╛рдК рд╢рдХрддрд╛рдд.
рдбреАрдлреЙрд▓реНрдЯ рд╕реНрддрд░:
рд▓реЗрдпрд░рдЪреЗ рдирд╛рд╡
рд╕рд╛рдордЧреНрд░реА
dependencies
рдХреЛрдгрддреАрд╣реА рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡ рдЬреНрдпрд╛рдЪреНрдпрд╛ рдЖрд╡реГрддреНрддреАрдордзреНрдпреЗ SNAPSHOT рдирд╛рд╣реА
spring-boot-loader
JAR рд▓реЛрдбрд░ рд╡рд░реНрдЧ
snapshot-dependencies
рдХреЛрдгрддреАрд╣реА рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡ рдЬреНрдпрд╛рдЪреНрдпрд╛ рдЖрд╡реГрддреНрддреАрдордзреНрдпреЗ SNAPSHOT рдЖрд╣реЗ
application
рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд░реНрдЧ рдЖрдгрд┐ рд╕рдВрд╕рд╛рдзрдиреЗ
рдордзреНрдпреЗ рд╕реНрддрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗрдд layers.idx
рдлрд╛рдИрд▓ рддреНрдпрд╛ рдХреНрд░рдорд╛рдиреЗ рдбреЙрдХрд░ рдЗрдореЗрдЬрдордзреНрдпреЗ рдЬреЛрдбрд▓реНрдпрд╛ рдЬрд╛рд╡реНрдпрд╛рдд. рд╣реЗ рд╕реНрддрд░ рдкрд╣рд┐рд▓реНрдпрд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддреАрдирдВрддрд░ рд╣реЛрд╕реНрдЯрдордзреНрдпреЗ рдХреЕрд╢реЗ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд рдХрд╛рд░рдг рддреЗ рдмрджрд▓рдд рдирд╛рд╣реАрдд. рдХреЗрд╡рд│ рдЕрджреНрдпрдпрд╛рд╡рдд рдНрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрддрд░ рд╣реЛрд╕реНрдЯрд╡рд░ рдбрд╛рдЙрдирд▓реЛрдб рдХреЗрд▓рд╛ рдЬрд╛рддреЛ, рдЬреЛ рдХрдореА рдЖрдХрд╛рд░рд╛рдореБрд│реЗ рдЬрд▓рдж рдЖрд╣реЗ .
рд╡рд┐рднрдХреНрдд рд╕реНрддрд░рд╛рдВрдордзреНрдпреЗ рдХрд╛рдврд▓реЗрд▓реНрдпрд╛ рдЕрд╡рд▓рдВрдмрдирд╛рдВрд╕рд╣ рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ
рдирд╛рд╡рд╛рдЪреА рдкрджреНрдзрдд рд╡рд╛рдкрд░реВрди рдЖрдореНрд╣реА рджреЛрди рдЯрдкреНрдкреНрдпрд╛рдд рдЕрдВрддрд┐рдо рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░реВ
рдорд▓реНрдЯреА-рд╕реНрдЯреЗрдЬ рдмрд┐рд▓реНрдбрд╕рд╛рдареА рдЖрдордЪреА рдбреЙрдХрд░рдлрд╛рдЗрд▓ рд╕реБрдзрд╛рд░рд┐рдд рдХрд░реВ:
# 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