เจธเจชเจฐเจฟเฉฐเจ— เจฌเฉ‚เจŸ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฒเจˆ เจ…เจจเฉเจ•เฉ‚เจฒเจฟเจค เจกเฉŒเจ•เจฐ เจšเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจ‰เจฃเจพ

เจ•เฉฐเจŸเฉ‡เจจเจฐ เจ‡เฉฑเจ• เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจ‡เจธเจฆเฉ‡ เจธเจพเจฐเฉ‡ เจธเฉŒเจซเจŸเจตเฉ‡เจ…เจฐ เจ…เจคเฉ‡ เจ“เจชเจฐเฉ‡เจŸเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ เจจเจฟเจฐเจญเจฐเจคเจพ เจฆเฉ‡ เจจเจพเจฒ เจชเฉˆเจ• เจ•เจฐเจจ เจ…เจคเฉ‡ เจซเจฟเจฐ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจตเฉฑเจ–-เจตเฉฑเจ– เจตเจพเจคเจพเจตเจฐเจฃเจพเจ‚ เจตเจฟเฉฑเจš เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจจ เจฆเฉ‡ เจคเจฐเจœเฉ€เจนเฉ€ เจธเจพเจงเจจ เจฌเจฃ เจ—เจ เจนเจจเฅค

เจ‡เจน เจฒเฉ‡เจ– เจธเจชเจฐเจฟเฉฐเจ— เจฌเฉ‚เจŸ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจˆเจœเจผ เจ•เจฐเจจ เจฆเฉ‡ เจตเฉฑเจ–-เจตเฉฑเจ– เจคเจฐเฉ€เจ•เจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจ•เจตเจฐ เจ•เจฐเจฆเจพ เจนเฉˆ:

  • เจ‡เฉฑเจ• เจกเฉŒเจ•เจฐ เจซเจพเจˆเจฒ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ‡เฉฑเจ• เจกเฉŒเจ•เจฐ เจšเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจ‰เจฃเจพ,
  • เจ•เจฒเจพเจ‰เจก-เจจเฉ‡เจŸเจฟเจต เจฌเจฟเจฒเจกเจชเฉˆเจ• เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจธเจฐเฉ‹เจค เจคเฉ‹เจ‚ เจ‡เฉฑเจ• OCI เจšเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจ‰เจฃเจพ,
  • เจ…เจคเฉ‡ เจฎเจฒเจŸเฉ€-เจŸเฉ€เจ…เจฐ เจŸเฉ‚เจฒเจธ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ JAR เจฆเฉ‡ เจนเจฟเฉฑเจธเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจตเฉฑเจ–-เจตเฉฑเจ– เจฒเฉ‡เจ…เจฐเจพเจ‚ เจตเจฟเฉฑเจš เจตเฉฑเจ– เจ•เจฐเจ•เฉ‡ เจฐเจจ-เจŸเจพเจˆเจฎ เจšเจฟเฉฑเจคเจฐ เจ…เจจเฉเจ•เฉ‚เจฒเจคเจพเฅค

 เจ•เฉ‹เจก เจ‰เจฆเจพเจนเจฐเจจ

เจ‡เจน เจฒเฉ‡เจ– เจตเจฐเจ•เจฟเฉฐเจ— เจ•เฉ‹เจก เจ‰เจฆเจพเจนเจฐเจจ เจฆเฉ‡ เจจเจพเจฒ เจนเฉˆ GitHub 'เจคเฉ‡ .

เจ•เฉฐเจŸเฉ‡เจจเจฐ เจธเจผเจฌเจฆเจพเจตเจฒเฉ€

เจ…เจธเฉ€เจ‚ เจฒเฉ‡เจ– เจตเจฟเฉฑเจš เจตเจฐเจคเฉ€ เจ—เจˆ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจธเจผเจฌเจฆเจพเจตเจฒเฉ€ เจจเจพเจฒ เจธเจผเฉเจฐเฉ‚เจ†เจค เจ•เจฐเจพเจ‚เจ—เฉ‡:

  • เจ•เฉฐเจŸเฉ‡เจจเจฐ เจšเจฟเฉฑเจคเจฐ: เจ‡เฉฑเจ• เจ–เจพเจธ เจซเจพเจฐเจฎเฉˆเจŸ เจฆเฉ€ เจซเจพเจˆเจฒเฅค เจ…เจธเฉ€เจ‚ เจฌเจฟเจฒเจก เจŸเฉ‚เจฒ เจšเจฒเจพ เจ•เฉ‡ เจ†เจชเจฃเฉ€ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจšเจฟเฉฑเจคเจฐ เจตเจฟเฉฑเจš เจฌเจฆเจฒ เจฆเฉ‡เจตเจพเจ‚เจ—เฉ‡เฅค
  • เจ•เฉฐเจŸเฉ‡เจจเจฐ: เจ•เฉฐเจŸเฉ‡เจจเจฐ เจšเจฟเฉฑเจคเจฐ เจฆเฉ€ เจ‡เฉฑเจ• เจšเฉฑเจฒเจฃเจฏเฉ‹เจ— เจ‰เจฆเจพเจนเจฐเจฃเฅค
  • เจ•เฉฐเจŸเฉ‡เจจเจฐ เจ‡เฉฐเจœเจฃ: เจ•เฉฐเจŸเฉ‡เจจเจฐ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ เจกเฉˆเจฎเจจ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจœเจผเจฟเฉฐเจฎเฉ‡เจตเจพเจฐ เจนเฉˆเฅค
  • เจ•เฉฐเจŸเฉ‡เจจเจฐ เจนเฉ‹เจธเจŸ: เจนเฉ‹เจธเจŸ เจ•เฉฐเจชเจฟเจŠเจŸเจฐ เจœเจฟเจธ 'เจคเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจ‡เฉฐเจœเจฃ เจšเฉฑเจฒเจฆเจพ เจนเฉˆเฅค
  • เจ•เฉฐเจŸเฉ‡เจจเจฐ เจฐเจœเจฟเจธเจŸเจฐเฉ€: เจ•เฉฐเจŸเฉ‡เจจเจฐ เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจชเฉเจฐเจ•เจพเจธเจผเจฟเจค เจ•เจฐเจจ เจ…เจคเฉ‡ เจตเฉฐเจกเจฃ เจฒเจˆ เจตเจฐเจคเจฟเจ† เจœเจพเจฃ เจตเจพเจฒเจพ เจ†เจฎ เจธเจฅเจพเจจเฅค
  • OCI เจฎเจฟเจ†เจฐเจ“เจชเจจ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจ‡เจจเฉ€เจธเจผเฉ€เจเจŸเจฟเจต (OCI) เจฒเฉ€เจจเจ•เจธ เจซเจพเจŠเจ‚เจกเฉ‡เจธเจผเจจ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจฌเจฃเจฟเจ† เจ‡เฉฑเจ• เจนเจฒเจ•เจพ, เจ–เฉเฉฑเจฒเฉเจนเจพ เจ—เจตเจฐเจจเฉˆเจ‚เจธ เจขเจพเจ‚เจšเจพ เจนเฉˆเฅค OCI เจšเจฟเฉฑเจคเจฐ เจจเจฟเจฐเจงเจพเจฐเจจ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจšเจฟเฉฑเจคเจฐ เจ…เจคเฉ‡ เจฐเจจเจŸเจพเจˆเจฎ เจซเจพเจฐเจฎเฉˆเจŸเจพเจ‚ เจฒเจˆ เจ‰เจฆเจฏเฉ‹เจ— เจฆเฉ‡ เจฎเจฟเจ†เจฐเจพเจ‚ เจจเฉ‚เฉฐ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ•เจฐเจฆเจพ เจนเฉˆ เจคเจพเจ‚ เจœเฉ‹ เจ‡เจน เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ‡เจ† เจœเจพ เจธเจ•เฉ‡ เจ•เจฟ เจธเจพเจฐเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจ‡เฉฐเจœเจฃ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจฌเจฟเจฒเจก เจŸเฉ‚เจฒ เจฆเฉเจ†เจฐเจพ เจฌเจฃเจพเจ เจ—เจ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจšเจฟเฉฑเจคเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจšเจฒเจพ เจธเจ•เจฆเฉ‡ เจนเจจเฅค

เจ•เจฟเจธเฉ‡ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจˆเจœเจผ เจ•เจฐเจจ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจ†เจชเจฃเฉ€ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจ•เฉฐเจŸเฉ‡เจจเจฐ เจšเจฟเฉฑเจคเจฐ เจตเจฟเฉฑเจš เจฒเจชเฉ‡เจŸเจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจ‰เจธ เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจธเจผเฉ‡เจ…เจฐเจก เจฐเจœเจฟเจธเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจชเฉเจฐเจ•เจพเจธเจผเจฟเจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจ•เฉฐเจŸเฉ‡เจจเจฐ เจฐเจจเจŸเจพเจˆเจฎ เจ‡เจธ เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจฐเจœเจฟเจธเจŸเจฐเฉ€ เจคเฉ‹เจ‚ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจฆเจพ เจนเฉˆ, เจ‡เจธเจจเฉ‚เฉฐ เจ…เจจเจชเฉˆเจ• เจ•เจฐเจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจ‡เจธเจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจšเจฒเจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค

เจธเจชเจฐเจฟเฉฐเจ— เจฌเฉ‚เจŸ เจฆเจพ เจธเฉฐเจธเจ•เจฐเจฃ 2.3 OCI เจšเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจชเจฒเฉฑเจ—เจ‡เจจ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจกเฉŒเจ•เจฐ เจธเจญ เจคเฉ‹เจ‚ เจตเฉฑเจง เจตเจฐเจคเจฟเจ† เจœเจพเจฃ เจตเจพเจฒเจพ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจธเจฅเจพเจชเจจ เจนเฉˆ, เจ…เจคเฉ‡ เจ…เจธเฉ€เจ‚ เจ†เจชเจฃเฉ€เจ†เจ‚ เจ‰เจฆเจพเจนเจฐเจฃเจพเจ‚ เจตเจฟเฉฑเจš เจกเฉŒเจ•เจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจ‡เจธเจฒเจˆ เจ‡เจธ เจฒเฉ‡เจ– เจตเจฟเฉฑเจš เจ…เจ—เจฒเฉ‡ เจธเจพเจฐเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจนเจตเจพเจฒเฉ‡ เจกเฉŒเจ•เจฐ เจฆเจพ เจนเจตเจพเจฒเจพ เจฆเฉ‡เจฃเจ—เฉ‡เฅค

เจ‡เฉฑเจ• เจ•เฉฐเจŸเฉ‡เจจเจฐ เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจฐเจตเจพเจ‡เจคเฉ€ เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ เจฌเจฃเจพเจ‰เจฃเจพ

เจธเจชเจฐเจฟเฉฐเจ— เจฌเฉ‚เจŸ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจฒเจˆ เจกเฉŒเจ•เจฐ เจšเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจ‰เจฃเจพ เจกเฉŒเจ•เจฐ เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจ•เฉเจ เจนเจฆเจพเจ‡เจคเจพเจ‚ เจœเฉ‹เฉœ เจ•เฉ‡ เจฌเจนเฉเจค เจ†เจธเจพเจจ เจนเฉˆเฅค

เจ…เจธเฉ€เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจ‡เฉฑเจ• เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจŸเฉ‡เจฌเจฒ JAR เจซเจพเจˆเจฒ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡, เจกเฉŒเจ•เจฐ เจซเจพเจˆเจฒ เจจเจฟเจฐเจฆเฉ‡เจธเจผเจพเจ‚ เจฆเฉ‡ เจนเจฟเฉฑเจธเฉ‡ เจตเจœเฉ‹เจ‚, เจœเจผเจฐเฉ‚เจฐเฉ€ เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจฌเฉ‡เจธ 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เจœเฉ‹ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจธเฉเจฃเฉ‡เจ—เจพเฅค

เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฌเจฃเจพเจ‰เจฃเจพ

เจชเจนเจฟเจฒเจพเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ Maven เจœเจพเจ‚ Gradle เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ‡เฉฑเจ• เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจ‡เฉฑเจฅเฉ‡ เจ…เจธเฉ€เจ‚ เจฎเจพเจตเฉ‡เจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚:

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 เจฆเฉเจ†เจฐเจพ เจฒเจพเจ‚เจš เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€ เจ…เจคเฉ‡ เจ‰เจฆเฉ‹เจ‚ เจคเฉ‹เจ‚ เจ•เจฒเจพเจŠเจก เจซเจพเจŠเจ‚เจกเจฐเฉ€, เจ—เฉ‚เจ—เจฒ เจเจช เจ‡เฉฐเจœเจจ, เจ—เจฟเจŸเจฒเจฌ, เจจเฉˆเจŸเจฟเจต เจ…เจคเฉ‡ เจ•เจˆ เจนเฉ‹เจฐเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจ…เจชเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆเฅค

เจธเจชเจฐเจฟเฉฐเจ— เจฌเฉ‚เจŸ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฒเจˆ เจ…เจจเฉเจ•เฉ‚เจฒเจฟเจค เจกเฉŒเจ•เจฐ เจšเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจ‰เจฃเจพ

เจ•เจฒเจพเจ‰เจก เจฌเจฟเจฒเจก เจชเฉˆเจ•เฉ‡เจœเจพเจ‚ เจฆเจพ เจซเจพเจ‡เจฆเจพ

เจšเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจฌเจฟเจฒเจกเจชเฉˆเจ• เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ‡ เจฎเฉเฉฑเจ– เจฒเจพเจญเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจ‡เจน เจนเฉˆ เจ•เจฟ เจšเจฟเฉฑเจคเจฐ เจธเฉฐเจฐเจšเจจเจพ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจ•เฉ‡เจ‚เจฆเจฐเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ เจชเฉเจฐเจฌเฉฐเจงเจฟเจค เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ (เจฌเจฟเจฒเจกเจฐ) เจ…เจคเฉ‡ เจฌเจฟเจฒเจกเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจธเจพเจฐเฉ€เจ†เจ‚ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจฒเจˆ เจชเฉเจฐเจธเจพเจฐเจฟเจค เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจฌเจฟเจฒเจก เจชเฉˆเจ•เฉ‡เจœเจพเจ‚ เจจเฉ‚เฉฐ เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎ เจจเจพเจฒ เจฎเจœเจผเจฌเฉ‚เจคเฉ€ เจจเจพเจฒ เจœเฉ‹เฉœเจฟเจ† เจ—เจฟเจ† เจธเฉ€เฅค เจ•เจฒเจพเจ‰เจก-เจจเฉ‡เจŸเจฟเจต เจฌเจฟเจฒเจกเจชเฉˆเจ•เจธ 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-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

เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจฆเจฟเจ–เจพเจ‰เจ‚เจฆเจพ เจนเฉˆ เจ•เจฟ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจšเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆ เจ…เจคเฉ‡ เจฐเจœเจฟเจธเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจฐเฉฑเจ–เจฟเจ† เจ—เจฟเจ† เจนเฉˆเฅค

เจ…เจจเฉเจ•เฉ‚เจฒเจฟเจค เจšเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจชเฉเจฐเฉ‡เจฐเจฃเจพ เจ…เจคเฉ‡ เจคเจ•เจจเฉ€เจ•เจพเจ‚

เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ…เจจเฉเจ•เฉ‚เจฒเจจ เจฆเฉ‡ เจฆเฉ‹ เจฎเฉเฉฑเจ– เจ•เจพเจฐเจจ เจนเจจ:

  • เจ‰เจคเจชเจพเจฆเจ•เจคเจพ: เจ‡เฉฑเจ• เจ•เฉฐเจŸเฉ‡เจจเจฐ เจ†เจฐเจ•เฉˆเจธเจŸเจฐเฉ‡เจธเจผเจจ เจธเจฟเจธเจŸเจฎ เจตเจฟเฉฑเจš, เจ‡เฉฑเจ• เจ•เฉฐเจŸเฉ‡เจจเจฐ เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจšเจฟเฉฑเจคเจฐ เจฐเจœเจฟเจธเจŸเจฐเฉ€ เจคเฉ‹เจ‚ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจ‡เฉฐเจœเจฃ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจตเจพเจฒเฉ‡ เจนเฉ‹เจธเจŸ เจจเฉ‚เฉฐ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจจเฉ‚เฉฐ เจฏเฉ‹เจœเจจเจพเจฌเฉฐเจฆเฉ€ เจ•เจฟเจนเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจฐเจœเจฟเจธเจŸเจฐเฉ€ เจคเฉ‹เจ‚ เจตเฉฑเจกเฉ‡ เจšเจฟเฉฑเจคเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจ–เจฟเฉฑเจšเจฃ เจฆเฉ‡ เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจ†เจฐเจ•เฉˆเจธเจŸเฉเจฐเฉ‡เจธเจผเจจ เจชเฉเจฐเจฃเจพเจฒเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจฒเฉฐเจฎเจพ เจธเจฎเจพเจ‚ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจธเฉ€เจ†เจˆ เจชเจพเจˆเจชเจฒเจพเจˆเจจเจพเจ‚ เจตเจฟเฉฑเจš เจฒเฉฐเจฌเฉ‡ เจธเจฎเฉ‡เจ‚ เจฆเจพ เจจเจฟเจฐเจฎเจพเจฃ เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค
  • เจธเฉเจฐเฉฑเจ–เจฟเจ† เจจเฉ‚เฉฐ: เจตเฉฑเจกเฉ‡ เจšเจฟเฉฑเจคเจฐเจพเจ‚ เจตเจฟเฉฑเจš เจ•เจฎเจœเจผเฉ‹เจฐเฉ€เจ†เจ‚ เจฒเจˆ เจ‡เฉฑเจ• เจตเฉฑเจกเจพ เจ–เฉ‡เจคเจฐ เจตเฉ€ เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค

เจ‡เฉฑเจ• เจกเฉŒเจ•เจฐ เจšเจฟเฉฑเจคเจฐ เจตเจฟเฉฑเจš เจฒเฉ‡เจ…เจฐเจพเจ‚ เจฆเจพ เจ‡เฉฑเจ• เจธเจŸเฉˆเจ• เจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจœเจฟเจจเฉเจนเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจนเจฐ เจ‡เฉฑเจ• เจธเจพเจกเฉ€ เจกเฉŒเจ•เจฐเจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจนเจฆเจพเจ‡เจค เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค เจนเจฐเฉ‡เจ• เจฒเฉ‡เจ…เจฐ เจ…เฉฐเจกเจฐเจฒเจพเจˆเฉฐเจ— เจฒเฉ‡เจ…เจฐ เจตเจฟเฉฑเจš เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจฆเจพ เจ‡เฉฑเจ• เจกเฉˆเจฒเจŸเจพ เจฆเจฐเจธเจพเจ‰เจ‚เจฆเฉ€ เจนเฉˆเฅค เจœเจฆเฉ‹เจ‚ เจ…เจธเฉ€เจ‚ เจฐเจœเจฟเจธเจŸเจฐเฉ€ เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจกเฉŒเจ•เจฐ เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจ–เจฟเฉฑเจšเจฆเฉ‡ เจนเจพเจ‚, เจคเจพเจ‚ เจ‡เจน เจฒเฉ‡เจ…เจฐเจพเจ‚ เจตเจฟเฉฑเจš เจ–เจฟเฉฑเจšเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจนเฉ‹เจธเจŸ 'เจคเฉ‡ เจ•เฉˆเจธเจผ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค

เจฌเจธเฉฐเจค เจฌเฉ‚เจŸ เจตเจฐเจคเจฆเจพ เจนเฉˆ "เจšเจฐเจฌเฉ€ JAR" เจตเจฟเฉฑเจš เจกเจฟเจซเจพเจฒเจŸ เจชเฉˆเจ•เฉ‡เจœเจฟเฉฐเจ— เจซเจพเจฐเจฎเฉˆเจŸ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจšเฅค เจœเจฆเฉ‹เจ‚ เจ…เจธเฉ€เจ‚ เจฎเฉ‹เจŸเฉ‡ JAR เจจเฉ‚เฉฐ เจฆเฉ‡เจ–เจฆเฉ‡ เจนเจพเจ‚, เจ…เจธเฉ€เจ‚ เจฆเฉ‡เจ–เจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจชเฉ‚เจฐเฉ‡ JAR เจฆเจพ เจฌเจนเฉเจค เจ›เฉ‹เจŸเจพ เจนเจฟเฉฑเจธเจพ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ€ เจนเฉˆเฅค เจ‡เจน เจ‰เจน เจนเจฟเฉฑเจธเจพ เจนเฉˆ เจœเฉ‹ เจ…เจ•เจธเจฐ เจฌเจฆเจฒเจฆเจพ เจนเฉˆ. เจฌเจพเจ•เฉ€ เจตเจฟเฉฑเจš เจธเจชเจฐเจฟเฉฐเจ— เจซเจฐเฉ‡เจฎเจตเจฐเจ• เจจเจฟเจฐเจญเจฐเจคเจพเจตเจพเจ‚ เจธเจผเจพเจฎเจฒ เจนเฉเฉฐเจฆเฉ€เจ†เจ‚ เจนเจจเฅค

เจ…เจจเฉเจ•เฉ‚เจฒเจจ เจซเจพเจฐเจฎเฉ‚เจฒเจพ เจธเจชเจฐเจฟเฉฐเจ— เจซเจฐเฉ‡เจฎเจตเจฐเจ• เจจเจฟเจฐเจญเจฐเจคเจพ เจคเฉ‹เจ‚ เจตเฉฑเจ–เจฐเฉ‡ เจชเฉฑเจงเจฐ 'เจคเฉ‡ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจ…เจฒเฉฑเจ— เจ•เจฐเจจ เจฆเฉ‡ เจฆเฉเจ†เจฒเฉ‡ เจ•เฉ‡เจ‚เจฆเจฐเจฟเจค เจนเฉˆเฅค

เจจเจฟเจฐเจญเจฐเจคเจพ เจชเจฐเจค, เจœเฉ‹ เจฎเฉ‹เจŸเฉ€ JAR เจซเจพเจˆเจฒ เจฆเจพ เจตเฉฑเจกเจพ เจนเจฟเฉฑเจธเจพ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ€ เจนเฉˆ, เจธเจฟเจฐเจซ เจ‡เฉฑเจ• เจตเจพเจฐ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจนเฉ‹เจธเจŸ เจธเจฟเจธเจŸเจฎ เจคเฉ‡ เจ•เฉˆเจธเจผ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค

เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจ…เจชเจกเฉ‡เจŸเจธ เจ…เจคเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจธเจผเจกเจฟเจŠเจฒเจฟเฉฐเจ— เจฆเฉŒเจฐเจพเจจ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ€ เจธเจฟเจฐเจซ เจ‡เฉฑเจ• เจชเจคเจฒเฉ€ เจชเจฐเจค เจ–เจฟเฉฑเจšเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ‡เจธ เจšเจฟเฉฑเจคเจฐ เจตเจฟเฉฑเจš เจฆเจฟเจ–เจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆ:

เจธเจชเจฐเจฟเฉฐเจ— เจฌเฉ‚เจŸ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฒเจˆ เจ…เจจเฉเจ•เฉ‚เจฒเจฟเจค เจกเฉŒเจ•เจฐ เจšเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจ‰เจฃเจพ

เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจญเจพเจ—เจพเจ‚ เจตเจฟเฉฑเจš, เจ…เจธเฉ€เจ‚ เจฆเฉ‡เจ–เจพเจ‚เจ—เฉ‡ เจ•เจฟ เจธเจชเจฐเจฟเฉฐเจ— เจฌเฉ‚เจŸ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฒเจˆ เจ‡เจนเจจเจพเจ‚ เจ…เจจเฉเจ•เฉ‚เจฒเจฟเจค เจšเจฟเฉฑเจคเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจฌเจฃเจพเจ‡เจ† เจœเจพเจตเฉ‡เฅค

เจฌเจฟเจฒเจกเจชเฉˆเจ• เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจธเจชเจฐเจฟเฉฐเจ— เจฌเฉ‚เจŸ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฒเจˆ เจ‡เฉฑเจ• เจ…เจจเฉเจ•เฉ‚เจฒเจฟเจค เจ•เฉฐเจŸเฉ‡เจจเจฐ เจšเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจ‰เจฃเจพ

เจธเจชเจฐเจฟเฉฐเจ— เจฌเฉ‚เจŸ 2.3 เจ‡เฉฑเจ• เจฎเฉ‹เจŸเฉ€ JAR เจซเจพเจˆเจฒ เจฆเฉ‡ เจนเจฟเฉฑเจธเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจตเฉฑเจ–-เจตเฉฑเจ– เจฒเฉ‡เจ…เจฐเจพเจ‚ เจตเจฟเฉฑเจš เจ•เฉฑเจข เจ•เฉ‡ เจฒเฉ‡เจ…เจฐเจฟเฉฐเจ— เจฆเจพ เจธเจฎเจฐเจฅเจจ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจฒเฉ‡เจ…เจฐเจฟเฉฐเจ— เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจกเจฟเจซเฉŒเจฒเจŸ เจคเฉŒเจฐ 'เจคเฉ‡ เจ…เจธเจฎเจฐเฉฑเจฅ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจธเจชเจฐเจฟเฉฐเจ— เจฌเฉ‚เจŸ เจฎเฉ‡เจตเฉ‡เจจ เจชเจฒเฉฑเจ—เจ‡เจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจธเจชเฉฑเจธเจผเจŸ เจคเฉŒเจฐ 'เจคเฉ‡ เจธเจฎเจฐเฉฑเจฅ เจ•เฉ€เจคเฉ€ เจœเจพเจฃเฉ€ เจšเจพเจนเฉ€เจฆเฉ€ เจนเฉˆ:

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

เจ…เจธเฉ€เจ‚ เจ‡เจธ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐเฉ‡เจธเจผเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ†เจชเจฃเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจชเจนเจฟเจฒเจพเจ‚ เจฌเจฟเจฒเจกเจชเฉˆเจ• เจจเจพเจฒ เจ…เจคเฉ‡ เจซเจฟเจฐ เจกเฉŒเจ•เจฐ เจจเจพเจฒ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ‡ เจญเจพเจ—เจพเจ‚ เจตเจฟเฉฑเจš เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจ•เจฐเจพเจ‚เจ—เฉ‡เฅค

เจšเจฒเฉ‹ เจฒเจพเจ‚เจš เจ•เจฐเฉ€เจ build-imageเจ•เฉฐเจŸเฉ‡เจจเจฐ เจšเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจฎเจพเจตเฉ‡เจจ เจŸเฉ€เจšเจพ:

mvn spring-boot:build-image

เจœเฉ‡เจ•เจฐ เจ…เจธเฉ€เจ‚ เจจเจคเฉ€เจœเฉ‡ เจตเจพเจฒเฉ‡ เจšเจฟเฉฑเจคเจฐ เจตเจฟเฉฑเจš เจฒเฉ‡เจ…เจฐเจพเจ‚ เจจเฉ‚เฉฐ เจฆเฉ‡เจ–เจฃ เจฒเจˆ เจกเจพเจˆเจต เจšเจฒเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚, เจคเจพเจ‚ เจ…เจธเฉ€เจ‚ เจฆเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฒเฉ‡เจ…เจฐ (เจฒเจพเจฒ เจตเจฟเฉฑเจš เจฆเจฐเจธเจพเจ เจ—เจ) เจ•เจฟเจฒเฉ‹เจฌเจพเจˆเจŸ เจฐเฉ‡เจ‚เจœ เจตเจฟเฉฑเจš เจ‰เจธ เจจเจพเจฒเฉ‹เจ‚ เจฌเจนเฉเจค เจ›เฉ‹เจŸเฉ€ เจนเฉˆ เจœเฉ‹ เจ…เจธเฉ€เจ‚ เจซเฉˆเจŸ JAR เจซเจพเจฐเจฎเฉˆเจŸ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเฉ€ เจนเฉˆ:

เจธเจชเจฐเจฟเฉฐเจ— เจฌเฉ‚เจŸ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฒเจˆ เจ…เจจเฉเจ•เฉ‚เจฒเจฟเจค เจกเฉŒเจ•เจฐ เจšเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจ‰เจฃเจพ

เจกเฉŒเจ•เจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ‡เฉฑเจ• เจธเจชเจฐเจฟเฉฐเจ— เจฌเฉ‚เจŸ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฒเจˆ เจ‡เฉฑเจ• เจ…เจจเฉเจ•เฉ‚เจฒเจฟเจค เจ•เฉฐเจŸเฉ‡เจจเจฐ เจšเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจ‰เจฃเจพ

เจ‡เฉฑเจ• Maven เจœเจพเจ‚ Gradle เจชเจฒเฉฑเจ—เจ‡เจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ€ เจฌเจœเจพเจ, เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจกเฉŒเจ•เจฐ เจซเจพเจˆเจฒ เจจเจพเจฒ เจ‡เฉฑเจ• เจฒเฉ‡เจ…เจฐเจก เจกเฉŒเจ•เจฐ JAR เจšเจฟเฉฑเจคเจฐ เจตเฉ€ เจฌเจฃเจพ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚เฅค

เจœเจฆเฉ‹เจ‚ เจ…เจธเฉ€เจ‚ เจกเฉŒเจ•เจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจคเจพเจ‚ เจธเจพเจจเฉ‚เฉฐ เจฒเฉ‡เจ…เจฐเจพเจ‚ เจจเฉ‚เฉฐ เจเจ•เจธเจŸเจฐเฉˆเจ•เจŸ เจ•เจฐเจจ เจ…เจคเฉ‡ เจ…เฉฐเจคเจฎ เจšเจฟเฉฑเจคเจฐ เจตเจฟเฉฑเจš เจ•เจพเจชเฉ€ เจ•เจฐเจจ เจฒเจˆ เจฆเฉ‹ เจตเจพเจงเฉ‚ เจ•เจฆเจฎ เจšเฉเฉฑเจ•เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค

เจฎเฉ‡เจตเฉ‡เจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจจเจพเจฒ เจฒเฉ‡เจ…เจฐเจฟเฉฐเจ— เจธเจฎเจฐเจฅเจฟเจค เจฌเจฃเจพเจ‰เจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚ JAR เจฆเฉ€ เจธเจฎเฉฑเจ—เจฐเฉ€ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเจฟเจ–เจพเจˆ เจฆเฉ‡เจตเฉ‡เจ—เฉ€:

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

เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจ‡เฉฑเจ• เจตเจพเจงเฉ‚ JAR เจจเจพเจฎเจ• เจฆเจฟเจ–เจพเจ‰เจ‚เจฆเจพ เจนเฉˆ spring-boot-jarmode-layertoolsะธ layersfle.idxเจซเจพเจˆเจฒเฅค เจ‡เจน เจตเจพเจงเฉ‚ JAR เจซเจพเจˆเจฒ เจฒเฉ‡เจ…เจฐเจก เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฟเฉฐเจ— เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ‚ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเฉ€ เจนเฉˆ, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ…เจ—เจฒเฉ‡ เจญเจพเจ— เจตเจฟเฉฑเจš เจฆเฉฑเจธเจฟเจ† เจ—เจฟเจ† เจนเฉˆเฅค

เจตเจฟเจ…เจ•เจคเฉ€เจ—เจค เจฒเฉ‡เจ…เจฐเจพเจ‚ 'เจคเฉ‡ เจจเจฟเจฐเจญเจฐเจคเจพ เจจเฉ‚เฉฐ เจเจ•เจธเจŸเจฐเฉˆเจ•เจŸ เจ•เจฐเจจเจพ

เจธเจพเจกเฉ‡ เจฒเฉ‡เจ…เจฐเจก JAR เจคเฉ‹เจ‚ เจฒเฉ‡เจ…เจฐเจพเจ‚ เจจเฉ‚เฉฐ เจฆเฉ‡เจ–เจฃ เจ…เจคเฉ‡ เจเจ•เจธเจŸเจฐเฉˆเจ•เจŸ เจ•เจฐเจจ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจธเจฟเจธเจŸเจฎ เจชเฉเจฐเจพเจชเจฐเจŸเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ -Djarmode=layertoolsเจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจ เจฒเจˆ spring-boot-jarmode-layertoolsเจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ€ เจฌเจœเจพเจ JAR:

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

เจ‡เจธ เจ•เจฎเจพเจ‚เจก เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจจเจพเจฒ เจ‰เจชเจฒเจฌเจง เจ•เจฎเจพเจ‚เจก เจตเจฟเจ•เจฒเจชเจพเจ‚ เจตเจพเจฒเฉ€ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจชเฉˆเจฆเจพ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ:

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

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

เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจจเฉ‚เฉฐ เจฆเจฟเจ–เจพเจ‰เจ‚เจฆเจพ เจนเฉˆ listextractะธ helpั helpเจกเจฟเจซเจพเจฒเจŸ เจฌเจฃเฉ‹เฅค เจฆเฉ‡ เจจเจพเจฒ เจ•เจฎเจพเจ‚เจก เจšเจฒเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚ listเจตเจฟเจ•เจฒเจช:

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

เจ…เจธเฉ€เจ‚ เจจเจฟเจฐเจญเจฐเจคเจพเจตเจพเจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจธเฉ‚เจšเฉ€ เจตเฉ‡เจ–เจฆเฉ‡ เจนเจพเจ‚ เจœเฉ‹ เจฒเฉ‡เจ…เจฐเจพเจ‚ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจœเฉ‹เฉœเฉ€เจ†เจ‚ เจœเจพ เจธเจ•เจฆเฉ€เจ†เจ‚ เจนเจจเฅค

เจชเฉ‚เจฐเจต-เจจเจฟเจฐเจงเจพเจฐเจค เจชเจฐเจคเจพเจ‚:

เจชเจฐเจค เจฆเจพ เจจเจพเจฎ

เจธเจฎเฉฑเจ—เจฐเฉ€

dependencies

เจ•เฉ‹เจˆ เจตเฉ€ เจจเจฟเจฐเจญเจฐเจคเจพ เจœเจฟเจธ เจฆเฉ‡ เจธเฉฐเจธเจ•เจฐเจฃ เจตเจฟเฉฑเจš SNAPSHOT เจธเจผเจพเจฎเจฒ เจจเจนเฉ€เจ‚ เจนเฉˆ

spring-boot-loader

JAR เจฒเฉ‹เจกเจฐ เจ•เจฒเจพเจธเจพเจ‚

snapshot-dependencies

เจ•เฉ‹เจˆ เจตเฉ€ เจจเจฟเจฐเจญเจฐเจคเจพ เจœเจฟเจธเจฆเจพ เจธเฉฐเจธเจ•เจฐเจฃ SNAPSHOT เจฐเฉฑเจ–เจฆเจพ เจนเฉˆ

application

เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจ•เจฒเจพเจธเจพเจ‚ เจ…เจคเฉ‡ เจธเจฐเฉ‹เจค

เจชเจฐเจคเจพเจ‚ เจตเจฟเฉฑเจš เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ layers.idxเจซเจพเจˆเจฒ เจจเฉ‚เฉฐ เจ•เฉเจฐเจฎ เจตเจฟเฉฑเจš เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจกเฉŒเจ•เจฐ เจšเจฟเฉฑเจคเจฐ เจตเจฟเฉฑเจš เจœเฉ‹เฉœเจฟเจ† เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ. เจ‡เจน เจชเจฐเจคเจพเจ‚ เจชเจนเจฟเจฒเฉ€ เจชเฉเจฐเจพเจชเจคเฉ€ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจนเฉ‹เจธเจŸ เจตเจฟเฉฑเจš เจ•เฉˆเจธเจผ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจœเจพเจ‚เจฆเฉ€เจ†เจ‚ เจนเจจ เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‡เจน เจฌเจฆเจฒเจฆเฉ€เจ†เจ‚ เจจเจนเฉ€เจ‚ เจนเจจเฅค เจธเจฟเจฐเจซเจผ เจ…เฉฑเจชเจกเฉ‡เจŸ เจ•เฉ€เจคเฉ€ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฒเฉ‡เจ…เจฐ เจจเฉ‚เฉฐ เจนเฉ‹เจธเจŸ 'เจคเฉ‡ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจœเฉ‹ เจ•เจฟ เจ˜เจŸเฉ‡ เจ†เจ•เจพเจฐ เจฆเฉ‡ เจ•เจพเจฐเจจ เจคเฉ‡เจœเจผ เจนเฉเฉฐเจฆเจพ เจนเฉˆ .

เจตเฉฑเจ–เจฐเฉ€เจ†เจ‚ เจชเจฐเจคเจพเจ‚ เจตเจฟเฉฑเจš เจเจ•เจธเจŸเจฐเฉˆเจ•เจŸ เจ•เฉ€เจคเฉ€ เจจเจฟเจฐเจญเจฐเจคเจพ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจšเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจ‰เจฃเจพ

เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจตเจฟเจงเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ…เฉฐเจคเจฟเจฎ เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจฆเฉ‹ เจชเฉœเจพเจตเจพเจ‚ เจตเจฟเฉฑเจš เจฌเจฃเจพเจตเจพเจ‚เจ—เฉ‡ เจฌเจนเฉ-เจชเฉœเจพเจ… เจตเจฟเจงเจพเจจ เจธเจญเจพ . เจชเจนเจฟเจฒเฉ‡ เจชเฉœเจพเจ… เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจจเจฟเจฐเจญเจฐเจคเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจเจ•เจธเจŸเจฐเฉˆเจ•เจŸ เจ•เจฐเจพเจ‚เจ—เฉ‡ เจ…เจคเฉ‡ เจฆเฉ‚เจœเฉ‡ เจชเฉœเจพเจ… เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจเจ•เจธเจŸเจฐเฉˆเจ•เจŸ เจ•เฉ€เจคเฉ€ เจจเจฟเจฐเจญเจฐเจคเจพ เจจเฉ‚เฉฐ เจ…เฉฐเจคเจฟเจฎ เจšเจฟเฉฑเจคเจฐ เจตเจฟเฉฑเจš เจ•เจพเจชเฉ€ เจ•เจฐเจพเจ‚เจ—เฉ‡เฅค

เจ†เจ“ เจฎเจฒเจŸเฉ€-เจธเจŸเฉ‡เจœ เจฌเจฟเจฒเจก เจฒเจˆ เจธเจพเจกเฉ€ เจกเฉŒเจ•เจฐเจซเจพเจˆเจฒ เจจเฉ‚เฉฐ เจธเฉฐเจธเจผเฉ‹เจงเจฟเจค เจ•เจฐเฉ€เจ:

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

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

เจ…เจธเฉ€เจ‚ เจ‡เจธ เจธเฉฐเจฐเจšเจจเจพ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเฉ€ เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ - Dockerfile2.

เจ…เจธเฉ€เจ‚ เจ•เจฎเจพเจ‚เจก เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจกเฉŒเจ•เจฐ เจšเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚:

docker build -f Dockerfile2 -t usersignup:v1 .

เจ‡เจธ เจ•เจฎเจพเจ‚เจก เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจธเจพเจจเฉ‚เฉฐ เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเฉ€ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจฎเจฟเจฒเจฆเฉ€ เจนเฉˆ:

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

เจ…เจธเฉ€เจ‚ เจฆเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจ‡เฉฑเจ• เจกเฉŒเจ•เจฐ เจšเจฟเฉฑเจคเจฐ เจ‡เฉฑเจ• เจšเจฟเฉฑเจคเจฐ ID เจจเจพเจฒ เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆ เจ…เจคเฉ‡ เจซเจฟเจฐ เจŸเฉˆเจ— เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ.

เจ…เฉฐเจค เจตเจฟเฉฑเจš, เจ…เจธเฉ€เจ‚ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเฉ‡ เจกเฉŒเจ•เจฐ เจšเจฟเฉฑเจคเจฐ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจฒเฉ‡เจ…เจฐเจพเจ‚ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจจ เจฒเจˆ เจชเจนเจฟเจฒเจพเจ‚ เจตเจพเจ‚เจ— เจกเจพเจˆเจต เจ•เจฎเจพเจ‚เจก เจšเจฒเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚เฅค เจ…เจธเฉ€เจ‚ เจกเจพเจˆเจต เจ•เจฎเจพเจ‚เจก เจจเฉ‚เฉฐ เจ‡เจจเจชเฉเจŸ เจตเจœเฉ‹เจ‚ เจ‡เฉฑเจ• เจšเจฟเฉฑเจคเจฐ 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

เจจเจฟเจฐเจญเจฐเจคเจพ เจชเจฐเจคเจพเจ‚ เจฆเฉ‡เจ–เฉ‹เฅค เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ 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