เชธเซเชชเซเชฐเชฟเช‚เช— เชฌเซ‚เชŸ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฎเชพเชŸเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เชกเซ‹เช•เชฐ เช›เชฌเซ€เช“ เชฌเชจเชพเชตเชตเซ€

เช•เชจเซเชŸเซ‡เชจเชฐ เช เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ เชคเซ‡เชจเชพ เชคเชฎเชพเชฎ เชธเซ‹เชซเซเชŸเชตเซ‡เชฐ เช…เชจเซ‡ เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎเชจเซ€ เช…เชตเชฒเช‚เชฌเชจ เชธเชพเชฅเซ‡ เชชเซ‡เช•เซ‡เชœ เช•เชฐเชตเชพ เช…เชจเซ‡ เชชเช›เซ€ เชคเซ‡เชจเซ‡ เชตเชฟเชตเชฟเชง เชตเชพเชคเชพเชตเชฐเชฃเชฎเชพเช‚ เชชเชนเซ‹เช‚เชšเชพเชกเชตเชพเชจเซเช‚ เชชเชธเช‚เชฆเซ€เชฆเชพ เชฎเชพเชงเซเชฏเชฎ เชฌเชจเซ€ เช—เชฏเซเช‚ เช›เซ‡.

เช† เชฒเซ‡เช– เชธเซเชชเซเชฐเชฟเช‚เช— เชฌเซ‚เชŸ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐเชพเช‡เช เช•เชฐเชตเชพเชจเซ€ เชตเชฟเชตเชฟเชง เชฐเซ€เชคเซ‹เชจเซ‡ เช†เชตเชฐเซ€ เชฒเซ‡ เช›เซ‡:

  • เชกเซ‹เช•เชฐเชซเชพเชˆเชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชกเซ‹เช•เชฐ เชˆเชฎเซ‡เชœ เชฌเชจเชพเชตเชตเซ€,
  • เช•เซเชฒเชพเช‰เชก-เชจเซ‡เชŸเชฟเชต เชฌเชฟเชฒเซเชกเชชเซ‡เช•เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชธเซเชคเซเชฐเซ‹เชคเชฎเชพเช‚เชฅเซ€ OCI เช‡เชฎเซ‡เชœ เชฌเชจเชพเชตเชตเซ€,
  • เช…เชจเซ‡ เชฎเชฒเซเชŸเชฟ-เชŸเชพเชฏเชฐ เชŸเซ‚เชฒเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ JAR เชจเชพ เชญเชพเช—เซ‹เชจเซ‡ เชตเชฟเชตเชฟเชง เชธเซเชคเชฐเซ‹เชฎเชพเช‚ เช…เชฒเช— เช•เชฐเซ€เชจเซ‡ เชฐเชจ-เชŸเชพเช‡เชฎ เช‡เชฎเซ‡เชœ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เชเซ‡เชถเชจ.

 เช•เซ‹เชก เช‰เชฆเชพเชนเชฐเชฃ

เช† เชฒเซ‡เช– เชตเชฐเซเช•เชฟเช‚เช— เช•เซ‹เชก เช‰เชฆเชพเชนเชฐเชฃ เชธเชพเชฅเซ‡ เช›เซ‡ GitHub เชชเชฐ .

เช•เชจเซเชŸเซ‡เชจเชฐ เชชเชฐเชฟเชญเชพเชทเชพ

เช…เชฎเซ‡ เชธเชฎเช—เซเชฐ เชฒเซ‡เช–เชฎเชพเช‚ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชคเซ€ เช•เชจเซเชŸเซ‡เชจเชฐ เชชเชฐเชฟเชญเชพเชทเชพ เชธเชพเชฅเซ‡ เชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเซ€เชถเซเช‚:

  • เช•เชจเซเชŸเซ‡เชจเชฐ เช›เชฌเซ€: เชšเซ‹เช•เซเช•เชธ เชซเซ‹เชฐเซเชฎเซ‡เชŸเชจเซ€ เชซเชพเช‡เชฒ. เช…เชฎเซ‡ เชฌเชฟเชฒเซเชก เชŸเซ‚เชฒ เชšเชฒเชพเชตเซ€เชจเซ‡ เช…เชฎเชพเชฐเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เชˆเชฎเซ‡เชœเชฎเชพเช‚ เช•เชจเซเชตเชฐเซเชŸ เช•เชฐเซ€เช เช›เซ€เช.
  • เช•เชจเซเชŸเซ‡เชจเชฐ: เช•เชจเซเชŸเซ‡เชจเชฐ เช‡เชฎเซ‡เชœเชจเซเช‚ เชเช•เซเชเชฟเช•เซเชฏเซเชŸเซ‡เชฌเชฒ เช‰เชฆเชพเชนเชฐเชฃ.
  • เช•เชจเซเชŸเซ‡เชจเชฐ เชเชจเซเชœเชฟเชจ: เช•เชจเซเชŸเซ‡เชจเชฐ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชœเชตเชพเชฌเชฆเชพเชฐ เชกเชฟเชฎเชจ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ.
  • เช•เชจเซเชŸเซ‡เชจเชฐ เชนเซ‹เชธเซเชŸ: เชนเซ‹เชธเซเชŸ เชฎเชถเซ€เชจ เช•เซ‡ เชœเซ‡เชจเชพ เชชเชฐ เช•เชจเซเชŸเซ‡เชจเชฐ เชเชจเซเชœเชฟเชจ เชšเชพเชฒเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡.
  • เช•เชจเซเชŸเซ‡เชจเชฐ เชฐเชœเชฟเชธเซเชŸเซเชฐเซ€: เช•เชจเซเชŸเซ‡เชจเชฐ เช‡เชฎเซ‡เชœเชจเซ‡ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเชตเชพ เช…เชจเซ‡ เชตเชฟเชคเชฐเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชตเชชเชฐเชพเชคเซเช‚ เชธเชพเชฎเชพเชจเซเชฏ เชธเซเชฅเชพเชจ.
  • OCI เชงเซ‹เชฐเชฃเช“เชชเชจ เช•เชจเซเชŸเซ‡เชจเชฐ เชชเชนเซ‡เชฒ (OCI) เชฒเชฟเชจเช•เซเชธ เชซเชพเช‰เชจเซเชกเซ‡เชถเชจ เชฆเซเชตเชพเชฐเชพ เชฐเชšเชพเชฏเซ‡เชฒ เชนเชฒเช•เซ‹, เช“เชชเชจ เชธเซ‹เชฐเซเชธ เชฎเซ‡เชจเซ‡เชœเชฎเซ‡เชจเซเชŸ เชซเซเชฐเซ‡เชฎเชตเชฐเซเช• เช›เซ‡. OCI เช‡เชฎเซ‡เชœ เชธเซเชชเซ‡เชธเชฟเชซเชฟเช•เซ‡เชถเชจ เช•เชจเซเชŸเซ‡เชจเชฐ เช‡เชฎเซ‡เชœ เชซเซ‹เชฐเซเชฎเซ‡เชŸเซเชธ เช…เชจเซ‡ เชฐเชจเชŸเชพเช‡เชฎ เชฎเชพเชŸเซ‡ เช‰เชฆเซเชฏเซ‹เช—เชจเชพ เชงเซ‹เชฐเชฃเซ‹เชจเซ‡ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡เชจเซ€ เช–เชพเชคเชฐเซ€ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช•เซ‡ เชคเชฎเชพเชฎ เช•เชจเซเชŸเซ‡เชจเชฐ เชเชจเซเชœเชฟเชจ เช•เซ‹เชˆเชชเชฃ เชฌเชฟเชฒเซเชก เชŸเซ‚เชฒ เชฆเซเชตเชพเชฐเชพ เชฌเชจเชพเชตเซ‡เชฒเซ€ เช•เชจเซเชŸเซ‡เชจเชฐ เช‡เชฎเซ‡เชœ เชšเชฒเชพเชตเซ€ เชถเช•เซ‡ เช›เซ‡.

เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐเชพเช‡เช เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เช…เชฎเชพเชฐเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เช‡เชฎเซ‡เชœเชฎเชพเช‚ เชฒเชชเซ‡เชŸเซ€เช เช›เซ€เช เช…เชจเซ‡ เชคเซ‡ เช›เชฌเซ€เชจเซ‡ เชธเชพเชฐเซเชตเชœเชจเชฟเช• เชฐเชœเชฟเชธเซเชŸเซเชฐเซ€เชฎเชพเช‚ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเซ€เช เช›เซ€เช. เช•เชจเซเชŸเซ‡เชจเชฐ เชฐเชจเชŸเชพเช‡เชฎ เช† เช›เชฌเซ€เชจเซ‡ เชฐเชœเชฟเชธเซเชŸเซเชฐเซ€เชฎเชพเช‚เชฅเซ€ เชชเซเชจเชƒเชชเซเชฐเชพเชชเซเชค เช•เชฐเซ‡ เช›เซ‡, เชคเซ‡เชจเซ‡ เช…เชจเชชเซ‡เช• เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเซ€ เช…เช‚เชฆเชฐ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชšเชฒเชพเชตเซ‡ เช›เซ‡.

เชธเซเชชเซเชฐเชฟเช‚เช— เชฌเซ‚เชŸเชจเซเช‚ เชตเชฐเซเชเชจ 2.3 OCI เช‡เชฎเซ‡เชœ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชชเซเชฒเช—เช‡เชจเซเชธ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡.

Docker เชธเซŒเชฅเซ€ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชคเชพ เช•เชจเซเชŸเซ‡เชจเชฐ เช…เชฎเชฒเซ€เช•เชฐเชฃ เช›เซ‡, เช…เชจเซ‡ เช…เชฎเซ‡ เช…เชฎเชพเชฐเชพ เช‰เชฆเชพเชนเชฐเชฃเซ‹เชฎเชพเช‚ เชกเซ‹เช•เชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เช เช›เซ€เช, เชคเซ‡เชฅเซ€ เช† เชฒเซ‡เช–เชฎเชพเช‚เชจเชพ เชคเชฎเชพเชฎ เช…เชจเซเช—เชพเชฎเซ€ เช•เชจเซเชŸเซ‡เชจเชฐ เชธเช‚เชฆเชฐเซเชญเซ‹ เชกเซ‹เช•เชฐเชจเซ‹ เชธเช‚เชฆเชฐเซเชญ เชฒเซ‡เชถเซ‡.

เชชเชฐเช‚เชชเชฐเชพเช—เชค เชฐเซ€เชคเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐเชจเซ€ เช›เชฌเซ€ เชฌเชจเชพเชตเชตเซ€

เชธเซเชชเซเชฐเชฟเช‚เช— เชฌเซ‚เชŸ เชเชชเซเชฒเซ€เช•เซ‡เชถเชจ เชฎเชพเชŸเซ‡ เชกเซ‹เช•เชฐ เชˆเชฎเซ‡เชœเซ€เชธ เชฌเชจเชพเชตเชตเซ€ เช เชกเซ‹เช•เชฐ เชซเชพเชˆเชฒเชฎเชพเช‚ เชฅเซ‹เชกเซ€ เชธเซ‚เชšเชจเชพเช“ เช‰เชฎเซ‡เชฐเซ€เชจเซ‡ เช–เซ‚เชฌ เชœ เชธเชฐเชณ เช›เซ‡.

เช…เชฎเซ‡ เชธเซŒเชชเซเชฐเชฅเชฎ เชเช•เซเชเชฟเช•เซเชฏเซเชŸเซ‡เชฌเชฒ JAR เชฌเชจเชพเชตเซ€เช เช›เซ€เช เช…เชจเซ‡, Dockerfile เชธเซ‚เชšเชจเชพเช“เชจเชพ เชญเชพเช— เชฐเซ‚เชชเซ‡, เชœเชฐเซ‚เชฐเซ€ เช•เชธเซเชŸเชฎเชพเช‡เชเซ‡เชถเชจ เชฒเชพเช—เซ เช•เชฐเซเชฏเชพ เชชเช›เซ€ เชฌเซ‡เช JRE เช‡เชฎเซ‡เชœเชจเซ€ เชŸเซ‹เชš เชชเชฐ เชเช•เซเชเชฟเช•เซเชฏเซเชŸเซ‡เชฌเชฒ JARเชจเซ€ เช•เซ‰เชชเชฟ เช•เชฐเซ€เช เช›เซ€เช.

เชšเชพเชฒเซ‹ เช…เชฎเชพเชฐเซ€ เชธเซเชชเซเชฐเชฟเช‚เช— เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฌเชจเชพเชตเซ€เช เชตเชธเช‚เชค เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• เชจเชฟเชฐเซเชญเชฐเชคเชพ เชธเชพเชฅเซ‡ weblombokะธ actuator. เช…เชฎเซ‡ เชเช• API เชชเซเชฐเชฆเชพเชจ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช†เชฐเชพเชฎ เชจเชฟเชฏเช‚เชคเซเชฐเช• เชชเชฃ เช‰เชฎเซ‡เชฐเซ€เช เช›เซ€เช 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เช…เช—เชพเช‰ เชฌเชจเชพเชตเซ‡เชฒ เชกเซ‹เช•เชฐเชซเชพเช‡เชฒ เชงเชฐเชพเชตเชคเซ€ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเซ€ เชฐเซ‚เชŸ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚เชฅเซ€:

docker build  -t usersignup:v1 .

เช…เชฎเซ‡ เช†เชฆเซ‡เชถ เชธเชพเชฅเซ‡ เชธเซ‚เชšเชฟเชฎเชพเช‚ เช…เชฎเชพเชฐเซ€ เช›เชฌเซ€ เชœเซ‹เชˆ เชถเช•เซ€เช เช›เซ€เช:

docker images 

เช‰เชชเชฐเซ‹เช•เซเชค เช†เชฆเซ‡เชถเชจเชพ เช†เช‰เชŸเชชเซเชŸเชฎเชพเช‚ เช…เชฎเชพเชฐเซ€ เช›เชฌเซ€ เชถเชพเชฎเซ‡เชฒ เช›เซ‡ usersignupเช†เชงเชพเชฐ เช›เชฌเซ€ เชธเชพเชฅเซ‡, adoptopenjdkเช…เชฎเชพเชฐเซ€ เชกเซ‹เช•เชฐเชซเชพเช‡เชฒเชฎเชพเช‚ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เช›เซ‡.

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

เช•เชจเซเชŸเซ‡เชจเชฐ เช‡เชฎเซ‡เชœเชจเซ€ เช…เช‚เชฆเชฐเชจเชพ เชธเซเชคเชฐเซ‹ เชœเซเช“

เชšเชพเชฒเซ‹ เชˆเชฎเซ‡เชœเชจเซ€ เช…เช‚เชฆเชฐเชจเชพ เชธเซเชคเชฐเซ‹เชจเชพ เชธเซเชŸเซ‡เช•เชจเซ‡ เชœเซ‹เชˆเช. เช…เชฎเซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชถเซเช‚ เชธเชพเชงเชจ  เชกเชพเช‡เชต เช† เชธเซเชคเชฐเซ‹ เชœเซ‹เชตเชพ เชฎเชพเชŸเซ‡:

dive usersignup:v1

เช…เชนเซ€เช‚ เชกเชพเช‡เชต เช†เชฆเซ‡เชถเชฎเชพเช‚เชฅเซ€ เช†เช‰เชŸเชชเซเชŸเชจเซ‹ เชญเชพเช— เช›เซ‡: 

เชธเซเชชเซเชฐเชฟเช‚เช— เชฌเซ‚เชŸ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฎเชพเชŸเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เชกเซ‹เช•เชฐ เช›เชฌเซ€เช“ เชฌเชจเชพเชตเชตเซ€

เชœเซ‡เชฎ เช†เชชเชฃเซ‡ เชœเซ‹เชˆ เชถเช•เซ€เช เช›เซ€เช, เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชธเซเชคเชฐ เช›เชฌเซ€เชจเชพ เช•เชฆเชจเซ‹ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชญเชพเช— เชฌเชจเชพเชตเซ‡ เช›เซ‡. เช…เชฎเซ‡ เช…เชฎเชพเชฐเชพ เช“เชชเซเชŸเชฟเชฎเชพเช‡เชเซ‡เชถเชจเชจเชพ เชญเชพเช— เชฐเซ‚เชชเซ‡ เชจเซ€เชšเซ‡เชจเชพ เชตเชฟเชญเชพเช—เซ‹เชฎเชพเช‚ เช† เชธเซเชคเชฐเชจเซเช‚ เช•เชฆ เช˜เชŸเชพเชกเชตเชพ เชฎเชพเช‚เช—เซ€เช เช›เซ€เช.

เชฌเชฟเชฒเซเชกเชชเซ‡เช•เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐเชจเซ€ เช›เชฌเซ€ เชฌเชจเชพเชตเชตเซ€

เชเชธเซ‡เชฎเซเชฌเชฒเซ€ เชชเซ‡เช•เซ‡เชœเซ‹ (เชฌเชฟเชฒเซเชกเชชเซ‡เช•เซเชธ) เช เชเช• เชธเชพเชฎเชพเชจเซเชฏ เชถเชฌเซเชฆ เช›เซ‡ เชœเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชตเชฟเชตเชฟเชง เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เชฆเซเชตเชพเชฐเชพ เชธเซ‡เชตเชพ (PAAS) เช“เชซเชฐเชฟเช‚เช— เชคเชฐเซ€เช•เซ‡ เชธเซ‹เชฐเซเชธ เช•เซ‹เชกเชฎเชพเช‚เชฅเซ€ เช•เชจเซเชŸเซ‡เชจเชฐ เช‡เชฎเซ‡เชœ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชฅเชพเชฏ เช›เซ‡. เชคเซ‡ 2011 เชฎเชพเช‚ Heroku เชฆเซเชตเชพเชฐเชพ เชฒเซ‹เชจเซเชš เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚ เช…เชจเซ‡ เชคเซเชฏเชพเชฐเชฅเซ€ เชคเซ‡เชจเซ‡ เช•เซเชฒเชพเช‰เชก เชซเชพเช‰เชจเซเชกเซเชฐเซ€, Google App Engine, Gitlab, Knative เช…เชจเซ‡ เช…เชจเซเชฏ เช˜เชฃเชพ เชฒเซ‹เช•เซ‹ เชฆเซเชตเชพเชฐเชพ เช…เชชเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡.

เชธเซเชชเซเชฐเชฟเช‚เช— เชฌเซ‚เชŸ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฎเชพเชŸเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เชกเซ‹เช•เชฐ เช›เชฌเซ€เช“ เชฌเชจเชพเชตเชตเซ€

เช•เซเชฒเชพเช‰เชก เชฌเชฟเชฒเซเชก เชชเซ‡เช•เซ‡เชœเซ€เชธเชจเซ‹ เชซเชพเชฏเชฆเซ‹

เช›เชฌเซ€เช“ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชฌเชฟเชฒเซเชกเชชเซ‡เช•เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ‹ เชฎเซเช–เซเชฏ เชซเชพเชฏเชฆเซ‹ เช เช›เซ‡ เช•เซ‡ เช‡เชฎเซ‡เชœ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชซเซ‡เชฐเชซเชพเชฐเซ‹ เช•เซ‡เชจเซเชฆเซเชฐเชฟเชฏ เชฐเซ€เชคเซ‡ เชฎเซ‡เชจเซ‡เชœ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡ (เชฌเชฟเชฒเซเชกเชฐ) เช…เชจเซ‡ เชฌเชฟเชฒเซเชกเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชคเชฎเชพเชฎ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซ‹ เชชเชฐ เชชเซเชฐเชšเชพเชฐ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡.

เชฌเชฟเชฒเซเชก เชชเซ‡เช•เซ‡เชœเซ‹ เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เชธเชพเชฅเซ‡ เชจเชœเซ€เช•เชฅเซ€ เชœเซ‹เชกเชพเชฏเซ‡เชฒเชพ เชนเชคเชพ. เช•เซเชฒเชพเช‰เชก-เชจเซ‡เชŸเชฟเชต เชฌเชฟเชฒเซเชกเชชเซ‡เช•เซเชธ OCI เช‡เชฎเซ‡เชœ เชซเซ‹เชฐเซเชฎเซ‡เชŸเชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซ€เชจเซ‡ เชธเชฎเช—เซเชฐ เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เชชเชฐ เชฎเชพเชจเช•เซ€เช•เชฐเชฃ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡, เชœเซ‡ เช–เชพเชคเชฐเซ€ เช•เชฐเซ‡ เช›เซ‡ เช•เซ‡ เช›เชฌเซ€ เชกเซ‹เช•เชฐ เชเชจเซเชœเชฟเชจ เชฆเซเชตเชพเชฐเชพ เชšเชฒเชพเชตเซ€ เชถเช•เชพเชฏ เช›เซ‡.

เชธเซเชชเซเชฐเชฟเช‚เช— เชฌเซ‚เชŸ เชชเซเชฒเช—เช‡เชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเซ‹

เชธเซเชชเซเชฐเชฟเช‚เช— เชฌเซ‚เชŸ เชชเซเชฒเช—เช‡เชจ เชฌเชฟเชฒเซเชกเชชเซ‡เช•เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชธเซเชคเซเชฐเซ‹เชคเชฎเชพเช‚เชฅเซ€ OCI เช›เชฌเซ€เช“ เชฌเชจเชพเชตเซ‡ เช›เซ‡. เชจเซ€ เชฎเชฆเชฆเชฅเซ€ เช›เชฌเซ€เช“ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ bootBuildImageเช•เชพเชฐเซเชฏเซ‹ (เช—เซเชฐเซ‡เชกเชฒ) เช…เชฅเชตเชพ spring-boot:build-imageเชฒเช•เซเชทเซเชฏ (เชฎเชพเชตเซ‡เชจ) เช…เชจเซ‡ เชธเซเชฅเชพเชจเชฟเช• เชกเซ‹เช•เชฐ เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจ.

เช…เชฎเซ‡ เชจเชพเชฎเชจเซ‹ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเซ€เชจเซ‡ เชกเซ‹เช•เชฐ เชฐเชœเชฟเชธเซเชŸเซเชฐเซ€เชฎเชพเช‚ เชฆเชฌเชพเชฃ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เช‡เชฎเซ‡เชœเชจเซเช‚ เชจเชพเชฎ เช•เชธเซเชŸเชฎเชพเช‡เช เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช. 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 เชธเชพเชฅเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เช›เชฌเซ€ เชฌเชจเชพเชตเชตเซ€

Jib เช Google เชคเชฐเชซเชฅเซ€ เช‡เชฎเซ‡เชœ เช“เชฅเชฐเชฟเช‚เช— เชชเซเชฒเช—เช‡เชจ เช›เซ‡ เชœเซ‡ เชธเซเชคเซเชฐเซ‹เชคเชฎเชพเช‚เชฅเซ€ เช•เชจเซเชŸเซ‡เชจเชฐ เช‡เชฎเซ‡เชœ เชฌเชจเชพเชตเชตเชพเชจเซ€ เชตเซˆเช•เชฒเซเชชเชฟเช• เชชเชฆเซเชงเชคเชฟ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡.

เช•เชธเซเชŸเชฎเชพเช‡เช เช•เชฐเซ‹ jib-maven-pluginpom.xml เชฎเชพเช‚:

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

เช†เช—เชณ, เช…เชฎเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฌเชจเชพเชตเชตเชพ เช…เชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เช‡เชฎเซ‡เชœ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ Maven เช†เชฆเซ‡เชถเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ Jib เชชเซเชฒเช—เช‡เชจ เชšเชฒเชพเชตเซ€เช เช›เซ€เช. เชชเชนเซ‡เชฒเชพเชจเซ€ เชœเซ‡เชฎ, เช…เชฎเซ‡ เช…เชนเซ€เช‚ เช•เซ‹เชˆเชชเชฃ เชกเซ‹เช•เชฐเชซเชพเชˆเชฒเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เชจเชฅเซ€:

mvn compile jib:build -Dimage=<docker registry name>/usersignup:v1

เช‰เชชเชฐเซ‹เช•เซเชค เชฎเซ‡เชตเชจ เช†เชฆเซ‡เชถ เชšเชฒเชพเชตเซเชฏเชพ เชชเช›เซ€, เช…เชฎเชจเซ‡ เชจเซ€เชšเซ‡เชจเซเช‚ เช†เช‰เชŸเชชเซเชŸ เชฎเชณเซ‡ เช›เซ‡:

[INFO] Containerizing application to pratikdas/usersignup:v1...
.
.
[INFO] Container entrypoint set to [java, -cp, /app/resources:/app/classes:/app/libs/*, io.pratik.users.UsersignupApplication]
[INFO] 
[INFO] Built and pushed image as pratikdas/usersignup:v1
[INFO] Executing tasks:
[INFO] [==============================] 100.0% complete

เช†เช‰เชŸเชชเซเชŸ เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡ เช•เซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เช‡เชฎเซ‡เชœ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡ เช…เชจเซ‡ เชฐเชœเชฟเชธเซเชŸเซเชฐเซ€เชฎเชพเช‚ เชฎเซ‚เช•เชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡.

เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช›เชฌเซ€เช“ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡เชจเซ€ เชชเซเชฐเซ‡เชฐเชฃเชพ เช…เชจเซ‡ เชชเชฆเซเชงเชคเชฟเช“

เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชฌเซ‡ เชฎเซเช–เซเชฏ เช•เชพเชฐเชฃเซ‹ เช›เซ‡:

  • เช‰เชคเซเชชเชพเชฆเช•เชคเชพ: เช•เชจเซเชŸเซ‡เชจเชฐ เช“เชฐเซเช•เซ‡เชธเซเชŸเซเชฐเซ‡เชถเชจ เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚, เช•เชจเซเชŸเซ‡เชจเชฐ เช‡เชฎเซ‡เชœเชจเซ‡ เช‡เชฎเซ‡เชœ เชฐเชœเชฟเชธเซเชŸเซเชฐเซ€เชฎเชพเช‚เชฅเซ€ เช•เชจเซเชŸเซ‡เชจเชฐ เชเชจเซเชœเชฟเชจ เชšเชฒเชพเชตเชคเชพ เชนเซ‹เชธเซเชŸ เชคเชฐเชซ เช–เซ‡เช‚เชšเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เช† เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เช†เชฏเซ‹เชœเชจ เช•เชนเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชฐเชœเชฟเชธเซเชŸเซเชฐเซ€เชฎเชพเช‚เชฅเซ€ เชฎเซ‹เชŸเซ€ เช›เชฌเซ€เช“ เช–เซ‡เช‚เชšเชตเชพเชฅเซ€ เช•เชจเซเชŸเซ‡เชจเชฐ เช“เชฐเซเช•เซ‡เชธเซเชŸเซเชฐเซ‡เชถเชจ เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚ เชฒเชพเช‚เชฌเชพ เชธเชฎเชฏ เชธเซเชงเซ€ เชธเซเชจเชฟเชถเซเชšเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช…เชจเซ‡ CI เชชเชพเช‡เชชเชฒเชพเช‡เชจเซเชธเชฎเชพเช‚ เชฒเชพเช‚เชฌเชพ เชธเชฎเชฏ เชธเซเชงเซ€ เชจเชฟเชฐเซเชฎเชพเชฃ เชฅเชพเชฏ เช›เซ‡.
  • เชธเซเชฐเช•เซเชทเชพ: เชฎเซ‹เชŸเซ€ เช›เชฌเซ€เช“เชฎเชพเช‚ เชจเชฌเชณเชพเชˆเช“ เชฎเชพเชŸเซ‡ เชชเชฃ เชฎเซ‹เชŸเซ‹ เชตเชฟเชธเซเชคเชพเชฐ เชนเซ‹เชฏ เช›เซ‡.

เชเช• เชกเซ‹เช•เชฐ เช‡เชฎเซ‡เชœ เชธเซเชคเชฐเซ‹เชจเชพ เชธเซเชŸเซ‡เช•เชฅเซ€ เชฌเชจเซ‡เชฒเซ€ เช›เซ‡, เชฆเชฐเซ‡เช• เช…เชฎเชพเชฐเซ€ เชกเซ‹เช•เชฐเชซเชพเช‡เชฒเชฎเชพเช‚ เชจเชฟเชตเซ‡เชฆเชจ เชฐเชœเซ‚ เช•เชฐเซ‡ เช›เซ‡. เชฆเชฐเซ‡เช• เชธเซเชคเชฐ เช…เช‚เชคเชฐเซเช—เชค เชธเซเชคเชฐเชฎเชพเช‚ เชฅเชคเชพ เชซเซ‡เชฐเชซเชพเชฐเซ‹เชจเชพ เชกเซ‡เชฒเซเชŸเชพเชจเซ‡ เชฐเชœเซ‚ เช•เชฐเซ‡ เช›เซ‡. เชœเซเชฏเชพเชฐเซ‡ เช†เชชเชฃเซ‡ เชฐเชœเชฟเชธเซเชŸเซเชฐเซ€เชฎเชพเช‚เชฅเซ€ เชกเซ‹เช•เชฐ เช‡เชฎเซ‡เชœ เช–เซ‡เช‚เชšเซ€เช เช›เซ€เช, เชคเซเชฏเชพเชฐเซ‡ เชคเซ‡ เชธเซเชคเชฐเซ‹เชฎเชพเช‚ เช–เซ‡เช‚เชšเชพเชฏ เช›เซ‡ เช…เชจเซ‡ เชนเซ‹เชธเซเชŸ เชชเชฐ เช•เซ‡เชถ เชฅเชพเชฏ เช›เซ‡.

เชตเชธเช‚เชค เชฌเซเชŸ เชตเชพเชชเชฐเซ‡ เช›เซ‡ "เชšเชฐเชฌเซ€ JAR" เชฎเชพเช‚ เชกเชฟเชซเซ‰เชฒเซเชŸ เชชเซ‡เช•เซ‡เชœเชฟเช‚เช— เชซเซ‹เชฐเซเชฎเซ‡เชŸ เชคเชฐเซ€เช•เซ‡. เชœเซเชฏเชพเชฐเซ‡ เช†เชชเชฃเซ‡ เชšเชฐเชฌเซ€เชตเชพเชณเชพ JAR เชจเซ‡ เชœเซ‹เชˆเช เช›เซ€เช, เชคเซเชฏเชพเชฐเซ‡ เช†เชชเชฃเซ‡ เชœเซ‹เชˆเช เช›เซ€เช เช•เซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชธเชฎเช—เซเชฐ JAR เชจเซ‹ เช–เซ‚เชฌ เชœ เชจเชพเชจเซ‹ เชญเชพเช— เช›เซ‡. เช† เชคเซ‡ เชญเชพเช— เช›เซ‡ เชœเซ‡ เชธเซŒเชฅเซ€ เชตเชงเซ เชฌเชฆเชฒเชพเชฏ เช›เซ‡. เชฌเชพเช•เซ€เชจเชพเชฎเชพเช‚ เชตเชธเช‚เชค เชซเซเชฐเซ‡เชฎเชตเชฐเซเช• เช…เชตเชฒเช‚เชฌเชจเชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡.

เช‘เชชเซเชŸเชฟเชฎเชพเช‡เชเซ‡เชถเชจ เชซเซ‹เชฐเซเชฎเซเชฏเซเชฒเชพ เชธเซเชชเซเชฐเชฟเช‚เช— เชซเซเชฐเซ‡เชฎเชตเชฐเซเช• เช…เชตเชฒเช‚เชฌเชจเชฅเซ€ เช…เชฒเช— เชธเซเชคเชฐเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ เช…เชฒเช— เช•เชฐเชตเชพเชจเซ€ เช†เชธเชชเชพเชธ เช•เซ‡เชจเซเชฆเซเชฐเชฟเชค เช›เซ‡.

เชจเชฟเชฐเซเชญเชฐเชคเชพ เชธเซเชคเชฐ เช•เซ‡ เชœเซ‡ เชœเชพเชกเชพ JAR เชซเชพเช‡เชฒเชจเซ‹ เชฎเซ‹เชŸเซ‹ เชญเชพเช— เชฌเชจเชพเชตเซ‡ เช›เซ‡ เชคเซ‡ เชฎเชพเชคเซเชฐ เชเช• เชœ เชตเชพเชฐ เชกเชพเช‰เชจเชฒเซ‹เชก เชฅเชพเชฏ เช›เซ‡ เช…เชจเซ‡ เชนเซ‹เชธเซเชŸ เชธเชฟเชธเซเชŸเชฎ เชชเชฐ เช•เซ‡เชถ เชฅเชพเชฏ เช›เซ‡.

เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช…เชชเชกเซ‡เชŸเซเชธ เช…เชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เชถเซ‡เชกเซเชฏเซเชฒเชฟเช‚เช— เชฆเชฐเชฎเชฟเชฏเชพเชจ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‹ เชฎเชพเชคเซเชฐ เชเช• เชชเชพเชคเชณเซ‹ เชธเซเชคเชฐ เช–เซ‡เช‚เชšเชพเชฏ เช›เซ‡. เช† เชฐเซ‡เช–เชพเช•เซƒเชคเชฟเชฎเชพเช‚ เชฌเชคเชพเชตเซเชฏเชพ เชชเซเชฐเชฎเชพเชฃเซ‡:

เชธเซเชชเซเชฐเชฟเช‚เช— เชฌเซ‚เชŸ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฎเชพเชŸเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เชกเซ‹เช•เชฐ เช›เชฌเซ€เช“ เชฌเชจเชพเชตเชตเซ€

เชจเซ€เชšเซ‡เชจเชพ เชตเชฟเชญเชพเช—เซ‹เชฎเชพเช‚, เช…เชฎเซ‡ เชธเซเชชเซเชฐเชฟเช‚เช— เชฌเซ‚เชŸ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฎเชพเชŸเซ‡ เช† เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเซ‡เชฒเซ€ เช›เชฌเซ€เช“ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฌเชจเชพเชตเชตเซ€ เชคเซ‡ เชœเซ‹เชˆเชถเซเช‚.

เชฌเชฟเชฒเซเชกเชชเซ‡เช• เชธเชพเชฅเซ‡ เชธเซเชชเซเชฐเชฟเช‚เช— เชฌเซ‚เชŸ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฎเชพเชŸเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชจเซเชŸเซ‡เชจเชฐ เช›เชฌเซ€ เชฌเชจเชพเชตเชตเซ€

เชธเซเชชเซเชฐเชฟเช‚เช— เชฌเซ‚เชŸ 2.3 เชœเชพเชกเชพ JAR เชซเชพเช‡เชฒเชจเชพ เชญเชพเช—เซ‹เชจเซ‡ เช…เชฒเช— เชธเซเชคเชฐเซ‹เชฎเชพเช‚ เช•เชพเชขเซ€เชจเซ‡ เชฒเซ‡เชฏเชฐเชฟเช‚เช—เชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซ‡ เช›เซ‡. เชฒเซ‡เชฏเชฐเชฟเช‚เช— เชธเซเชตเชฟเชงเชพ เชกเชฟเชซเซ‰เชฒเซเชŸ เชฐเซ‚เชชเซ‡ เช…เช•เซเชทเชฎ เช›เซ‡ เช…เชจเซ‡ เชธเซเชชเซเชฐเชฟเช‚เช— เชฌเซ‚เชŸ เชฎเซ‡เชตเซ‡เชจ เชชเซเชฒเช—เช‡เชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชธเซเชชเชทเซเชŸเชชเชฃเซ‡ เชธเช•เซเชทเชฎ เชนเซ‹เชตเซเช‚ เช†เชตเชถเซเชฏเช• เช›เซ‡:

<plugin>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
  <configuration>
    <layers>
      <enabled>true</enabled>
    </layers>
  </configuration> 
</plugin>

เช…เชฎเซ‡ เช† เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชชเชนเซ‡เชฒเชพ เชฌเชฟเชฒเซเชกเชชเซ‡เช• เชธเชพเชฅเซ‡ เช…เชจเซ‡ เชชเช›เซ€ เชจเซ€เชšเซ‡เชจเชพ เชตเชฟเชญเชพเช—เซ‹เชฎเชพเช‚ เชกเซ‹เช•เชฐ เชธเชพเชฅเซ‡ เช…เชฎเชพเชฐเซ€ เช•เชจเซเชŸเซ‡เชจเชฐ เช‡เชฎเซ‡เชœ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เช•เชฐเซ€เชถเซเช‚.

เชšเชพเชฒเซ‹ เชฆเซ‹เชกเซ€เช build-imageเช•เชจเซเชŸเซ‡เชจเชฐ เช‡เชฎเซ‡เชœ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชฎเซ‡เชตเซ‡เชจ เชฒเช•เซเชทเซเชฏ:

mvn spring-boot:build-image

เชœเซ‹ เช†เชชเชฃเซ‡ เชชเชฐเชฟเชฃเชพเชฎเซ€ เชˆเชฎเซ‡เชœเชฎเชพเช‚ เชฒเซ‡เชฏเชฐเซเชธ เชœเซ‹เชตเชพ เชฎเชพเชŸเซ‡ เชกเชพเชˆเชต เชšเชฒเชพเชตเซ€เช, เชคเซ‹ เช†เชชเชฃเซ‡ เชœเซ‹เชˆ เชถเช•เซ€เช เช›เซ€เช เช•เซ‡ เชœเชพเชกเชพ JAR เชซเซ‹เชฐเซเชฎเซ‡เชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช…เชฎเชจเซ‡ เชœเซ‡ เชฎเชณเซเชฏเซเช‚ เชคเซ‡เชจเซ€ เชธเชฐเช–เชพเชฎเชฃเซ€เชฎเชพเช‚ เชเชชเซเชฒเซ€เช•เซ‡เชถเชจ เชฒเซ‡เชฏเชฐ (เชฒเชพเชฒ เชฐเช‚เช—เชฎเชพเช‚ เชตเชฐเซเชคเซเชณเชพเช•เชพเชฐ) เช•เชฟเชฒเซ‹เชฌเชพเชˆเชŸ เชฐเซ‡เชจเซเชœเชฎเชพเช‚ เช˜เชฃเซเช‚ เชจเชพเชจเซเช‚ เช›เซ‡:

เชธเซเชชเซเชฐเชฟเช‚เช— เชฌเซ‚เชŸ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฎเชพเชŸเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เชกเซ‹เช•เชฐ เช›เชฌเซ€เช“ เชฌเชจเชพเชตเชตเซ€

เชกเซ‹เช•เชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชธเซเชชเซเชฐเชฟเช‚เช— เชฌเซ‚เชŸ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฎเชพเชŸเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชจเซเชŸเซ‡เชจเชฐ เช›เชฌเซ€ เชฌเชจเชพเชตเชตเซ€

Maven เช…เชฅเชตเชพ Gradle เชชเซเชฒเช—เช‡เชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ‡ เชฌเชฆเชฒเซ‡, เช…เชฎเซ‡ Docker เชซเชพเช‡เชฒ เชธเชพเชฅเซ‡ เชธเซเชคเชฐเชตเชพเชณเซ€ Docker JAR เช‡เชฎเซ‡เชœ เชชเชฃ เชฌเชจเชพเชตเซ€ เชถเช•เซ€เช เช›เซ€เช.

เชœเซเชฏเชพเชฐเซ‡ เช†เชชเชฃเซ‡ เชกเซ‹เช•เชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เช เช›เซ€เช, เชคเซเชฏเชพเชฐเซ‡ เช…เชฎเชพเชฐเซ‡ เชธเซเชคเชฐเซ‹เชจเซ‡ เชฌเชนเชพเชฐ เช•เชพเชขเชตเชพ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เช…เช‚เชคเชฟเชฎ เชˆเชฎเซ‡เชœเชฎเชพเช‚ เช•เซ‰เชชเชฟ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฌเซ‡ เชตเชงเชพเชฐเชพเชจเชพ เชชเช—เชฒเชพเช‚ เชฒเซ‡เชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

เชฒเซ‡เชฏเชฐเชฟเช‚เช— เชธเช•เซเชทเชฎ เชธเชพเชฅเซ‡ Maven เชธเชพเชฅเซ‡ เชฌเชจเชพเชตเซเชฏเชพ เชชเช›เซ€ เชชเชฐเชฟเชฃเชพเชฎเซ€ JAR เชจเซ€ เชธเชพเชฎเช—เซเชฐเซ€ เช†เชจเชพ เชœเซ‡เชตเซ€ เชฆเซ‡เช–เชพเชถเซ‡:

META-INF/
.
BOOT-INF/lib/
.
BOOT-INF/lib/spring-boot-jarmode-layertools-2.3.3.RELEASE.jar
BOOT-INF/classpath.idx
BOOT-INF/layers.idx

เช†เช‰เชŸเชชเซเชŸ เชจเชพเชฎเชจเชพ เชตเชงเชพเชฐเชพเชจเชพ JAR เชฌเชคเชพเชตเซ‡ เช›เซ‡ spring-boot-jarmode-layertoolsะธ layersfle.idxเชซเชพเช‡เชฒ เช† เชตเชงเชพเชฐเชพเชจเซ€ JAR เชซเชพเช‡เชฒ เชฒเซ‡เชฏเชฐเชฟเช‚เช— เช•เซเชทเชฎเชคเชพเช“ เชชเซ‚เชฐเซ€ เชชเชพเชกเซ‡ เช›เซ‡, เชœเซ‡ เช†เช—เชณเชจเชพ เชตเชฟเชญเชพเช—เชฎเชพเช‚ เชตเชฐเซเชฃเชตเซ‡เชฒ เช›เซ‡.

เช…เชฒเช— เชธเซเชคเชฐเซ‹ เชชเชฐ เชจเชฟเชฐเซเชญเชฐเชคเชพ เชฌเชนเชพเชฐ เช•เชพเชขเซ‹

เช…เชฎเชพเชฐเชพ เชธเซเชคเชฐเชตเชพเชณเซ€ JAR เชฎเชพเช‚เชฅเซ€ เชธเซเชคเชฐเซ‹ เชœเซ‹เชตเชพ เช…เชจเซ‡ เช•เชพเชขเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชธเชฟเชธเซเชŸเชฎ เชชเซเชฐเซ‹เชชเชฐเซเชŸเซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เช เช›เซ€เช -Djarmode=layertoolsเชถเชฐเซ‚เช†เชค เชฎเชพเชŸเซ‡ spring-boot-jarmode-layertoolsเชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ เชฌเชฆเชฒเซ‡ JAR:

java -Djarmode=layertools -jar target/usersignup-0.0.1-SNAPSHOT.jar

เช† เช†เชฆเซ‡เชถเชจเซ‡ เชšเชฒเชพเชตเชตเชพเชฅเซ€ เช‰เชชเชฒเชฌเซเชง เช†เชฆเซ‡เชถ เชตเชฟเช•เชฒเซเชชเซ‹ เชงเชฐเชพเชตเชคเซเช‚ เช†เช‰เชŸเชชเซเชŸ เช‰เชคเซเชชเชจเซเชจ เชฅเชพเชฏ เช›เซ‡:

Usage:
  java -Djarmode=layertools -jar usersignup-0.0.1-SNAPSHOT.jar

Available commands:
  list     List layers from the jar that can be extracted
  extract  Extracts layers from the jar for image creation
  help     Help about any command

เช†เช‰เชŸเชชเซเชŸ เช†เชฆเซ‡เชถเซ‹ เชฌเชคเชพเชตเซ‡ เช›เซ‡ listextractะธ helpั helpเชฎเซ‚เชณเชญเซ‚เชค เชฌเชจเซ‹. เชšเชพเชฒเซ‹ เช†เชฆเซ‡เชถ เชธเชพเชฅเซ‡ เชšเชฒเชพเชตเซ€เช listเชตเชฟเช•เชฒเซเชช:

java -Djarmode=layertools -jar target/usersignup-0.0.1-SNAPSHOT.jar list
dependencies
spring-boot-loader
snapshot-dependencies
application

เช…เชฎเซ‡ เช…เชตเชฒเช‚เชฌเชจเชจเซ€ เชธเซ‚เชšเชฟ เชœเซ‹เชˆเช เช›เซ€เช เชœเซ‡ เชธเซเชคเชฐเซ‹ เชคเชฐเซ€เช•เซ‡ เช‰เชฎเซ‡เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡.

เชฎเซ‚เชณเชญเซ‚เชค เชฐเซ€เชคเซ‡ เชธเซเชคเชฐเซ‹:

เชธเซเชคเชฐเชจเซเช‚ เชจเชพเชฎ

เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพ

dependencies

เช•เซ‹เชˆเชชเชฃ เชจเชฟเชฐเซเชญเชฐเชคเชพ เช•เซ‡ เชœเซ‡เชจเชพ เชธเช‚เชธเซเช•เชฐเชฃเชฎเชพเช‚ SNAPSHOT เชจเชฅเซ€

spring-boot-loader

JAR เชฒเซ‹เชกเชฐ เชตเชฐเซเช—เซ‹

snapshot-dependencies

เช•เซ‹เชˆเชชเชฃ เชจเชฟเชฐเซเชญเชฐเชคเชพ เช•เซ‡ เชœเซ‡เชจเชพ เชธเช‚เชธเซเช•เชฐเชฃเชฎเชพเช‚ SNAPSHOT เช›เซ‡

application

เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชตเชฐเซเช—เซ‹ เช…เชจเซ‡ เชธเช‚เชธเชพเชงเชจเซ‹

เชธเซเชคเชฐเซ‹ เชฎเชพเช‚ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เชฅเชฏเซ‡เชฒ เช›เซ‡ layers.idxเชซเชพเช‡เชฒ เชœเซ‡ เช•เซเชฐเชฎเชฎเชพเช‚ เชกเซ‹เช•เชฐ เช‡เชฎเซ‡เชœเชฎเชพเช‚ เช‰เชฎเซ‡เชฐเชตเซ€ เชœเซ‹เชˆเช. เช† เชธเซเชคเชฐเซ‹ เชชเซเชฐเชฅเชฎ เชฎเซ‡เชณเชตเซเชฏเชพ เชชเช›เซ€ เชนเซ‹เชธเซเชŸ เชชเชฐ เช•เซ‡เชถ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡ เชฌเชฆเชฒเชพเชคเชพ เชจเชฅเซ€. เชซเช•เซเชค เช…เชชเชกเซ‡เชŸ เช•เชฐเซ‡เชฒ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฒเซ‡เชฏเชฐ เชœ เชนเซ‹เชธเซเชŸ เชชเชฐ เชกเชพเช‰เชจเชฒเซ‹เชก เชฅเชพเชฏ เช›เซ‡, เชœเซ‡ เช˜เชŸเชพเชกเซ‡เชฒเชพ เช•เชฆเชจเซ‡ เช•เชพเชฐเชฃเซ‡ เชเชกเชชเซ€ เช›เซ‡ .

เช…เชฒเช— เชธเซเชคเชฐเซ‹เชฎเชพเช‚ เช•เชพเชขเชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒเซ€ เช…เชตเชฒเช‚เชฌเชจ เชธเชพเชฅเซ‡ เช›เชฌเซ€ เชฌเชจเชพเชตเชตเซ€

เช…เชฎเซ‡ เชจเชพเชฎเชจเซ€ เชชเชฆเซเชงเชคเชฟเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชฌเซ‡ เชคเชฌเช•เซเช•เชพเชฎเชพเช‚ เช…เช‚เชคเชฟเชฎ เช›เชฌเซ€ เชฌเชจเชพเชตเซ€เชถเซเช‚ เชฎเชฒเซเชŸเซ€-เชธเซเชŸเซ‡เชœ เชเชธเซ‡เชฎเซเชฌเชฒเซ€ . เชชเซเชฐเชฅเชฎ เชšเชฐเชฃเชฎเชพเช‚ เช†เชชเชฃเซ‡ เชจเชฟเชฐเซเชญเชฐเชคเชพเช“เชจเซ‡ เชเช•เซเชธเซเชŸเซเชฐเซ‡เช•เซเชŸ เช•เชฐเซ€เชถเซเช‚ เช…เชจเซ‡ เชฌเซ€เชœเชพ เชธเซเชŸเซ‡เชชเชฎเชพเช‚ เช†เชชเชฃเซ‡ เชเช•เซเชธเชŸเซเชฐเซ‡เช•เซเชŸเซ‡เชก เชกเชฟเชชเซ‡เชจเซเชกเชจเซเชธเซ€เชจเซ‡ เชซเชพเชˆเชจเชฒเชฎเชพเช‚ เช•เซ‹เชชเซ€ เช•เชฐเซ€เชถเซเช‚.

เชšเชพเชฒเซ‹ เชฎเชฒเซเชŸเชฟ-เชธเซเชŸเซ‡เชœ เชฌเชฟเชฒเซเชก เชฎเชพเชŸเซ‡ เช…เชฎเชพเชฐเซ€ เชกเซ‹เช•เชฐเชซเชพเชˆเชฒเชฎเชพเช‚ เชซเซ‡เชฐเชซเชพเชฐ เช•เชฐเซ€เช:

# the first stage of our build will extract the layers
FROM adoptopenjdk:14-jre-hotspot as builder
WORKDIR application
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} application.jar
RUN java -Djarmode=layertools -jar application.jar extract

# the second stage of our build will copy the extracted layers
FROM adoptopenjdk:14-jre-hotspot
WORKDIR application
COPY --from=builder application/dependencies/ ./
COPY --from=builder application/spring-boot-loader/ ./
COPY --from=builder application/snapshot-dependencies/ ./
COPY --from=builder application/application/ ./
ENTRYPOINT ["java", "org.springframework.boot.loader.JarLauncher"]

เช…เชฎเซ‡ เช† เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจเชจเซ‡ เชเช• เช…เชฒเช— เชซเชพเช‡เชฒเชฎเชพเช‚ เชธเชพเชšเชตเซ€เช เช›เซ€เช - Dockerfile2.

เช…เชฎเซ‡ เช†เชฆเซ‡เชถเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชกเซ‹เช•เชฐ เช‡เชฎเซ‡เชœ เชฌเชจเชพเชตเซ€เช เช›เซ€เช:

docker build -f Dockerfile2 -t usersignup:v1 .

เช† เช†เชฆเซ‡เชถ เชšเชฒเชพเชตเซเชฏเชพ เชชเช›เซ€ เช†เชชเชฃเชจเซ‡ เชจเซ€เชšเซ‡เชจเซเช‚ เช†เช‰เชŸเชชเซเชŸ เชฎเชณเซ‡ เช›เซ‡:

Sending build context to Docker daemon  20.41MB
Step 1/12 : FROM adoptopenjdk:14-jre-hotspot as builder
14-jre-hotspot: Pulling from library/adoptopenjdk
.
.
Successfully built a9ebf6970841
Successfully tagged userssignup:v1

เช†เชชเชฃเซ‡ เชœเซ‹เชˆ เชถเช•เซ€เช เช›เซ€เช เช•เซ‡ เชกเซ‹เช•เชฐ เชˆเชฎเซ‡เชœ เชˆเชฎเซ‡เชœ เช†เชˆเชกเซ€ เชธเชพเชฅเซ‡ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡ เช…เชจเซ‡ เชชเช›เซ€ เชŸเซ‡เช— เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡.

เช›เซ‡เชฒเซเชฒเซ‡, เช…เชฎเซ‡ เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ‡เชฒ เชกเซ‹เช•เชฐ เชˆเชฎเซ‡เชœเชจเซ€ เช…เช‚เชฆเชฐเชจเชพ เชธเซเชคเชฐเซ‹เชจเซ‡ เชคเชชเชพเชธเชตเชพ เชฎเชพเชŸเซ‡ เชชเชนเซ‡เชฒเชพเชจเซ€ เชœเซ‡เชฎ เชกเชพเชˆเชต เช†เชฆเซ‡เชถ เชšเชฒเชพเชตเซ€เช เช›เซ€เช. เช…เชฎเซ‡ เชกเชพเช‡เชต เช†เชฆเซ‡เชถเชฎเชพเช‚ เช‡เชจเชชเซเชŸ เชคเชฐเซ€เช•เซ‡ เช‡เชฎเซ‡เชœ ID เช…เชฅเชตเชพ เชŸเซ…เช— เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช:

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

เชจเชฟเชฐเซเชญเชฐเชคเชพ เชธเซเชคเชฐเซ‹ เชœเซเช“. เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชœเชพเชฐ เชซเชพเช‡เชฒ เชฌเชจเชพเชตเชคเชพ เชชเชนเซ‡เชฒเชพ, เช–เชพเชคเชฐเซ€ เช•เชฐเซ‹ เช•เซ‡ เชฒเซ‡เชฏเชฐเชฟเช‚เช— เชธเซเชตเชฟเชงเชพ spring-boot-maven-plugin เชฎเชพเช‚ เชธเช•เซเชทเชฎ เช›เซ‡:

java -Djarmode=layertools -jar application.jar list

เชจเชฟเชฐเซเชญเชฐเชคเชพ เชธเซเชคเชฐเซ‹ เชฌเชนเชพเชฐ เช•เชพเชขเซ‹. เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชœเชพเชฐ เชซเชพเช‡เชฒ เชฌเชจเชพเชตเชคเชพ เชชเชนเซ‡เชฒเชพ, เช–เชพเชคเชฐเซ€ เช•เชฐเซ‹ เช•เซ‡ เชฒเซ‡เชฏเชฐเชฟเช‚เช— เชธเซเชตเชฟเชงเชพ spring-boot-maven-plugin เชฎเชพเช‚ เชธเช•เซเชทเชฎ เช›เซ‡:

 java -Djarmode=layertools -jar application.jar extract

เช•เชจเซเชŸเซ‡เชจเชฐ เช›เชฌเซ€เช“เชจเซ€ เชธเซ‚เชšเชฟ เชœเซ‹เชตเซ€

docker images

เช•เชจเซเชŸเซ‡เชจเชฐ เช‡เชฎเซ‡เชœเชจเซ€ เช…เช‚เชฆเชฐ เชกเชพเชฌเซ€ เชฌเชพเชœเซ เชœเซเช“ (เช–เชพเชคเชฐเซ€ เช•เชฐเซ‹ เช•เซ‡ เชกเชพเช‡เชต เชŸเซ‚เชฒ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡เชฒเซเช‚ เช›เซ‡):

dive <image ID or image tag>

เชธเซ‹เชฐเซเชธ: www.habr.com