เด’เดฐเต เดธเตเดชเตเดฐเดฟเด‚เด—เต เดฌเต‚เดŸเตเดŸเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดพเดฏเดฟ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต เดšเต†เดฏเตเดค เดกเต‹เด•เตเด•เตผ เด‡เดฎเต‡เดœเตเด•เตพ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจเต

เด’เดฐเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเต† เด…เดคเดฟเดจเตเดฑเต† เดŽเดฒเตเดฒเดพ เดธเต‹เดซเตเดฑเตเดฑเตโ€Œเดตเต†เดฏเตผ, เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเดฟเด‚เด—เต เดธเดฟเดธเตเดฑเตเดฑเด‚ เดกเดฟเดชเตปเดกเตปเดธเดฟเด•เตพ เดŽเดจเตเดจเดฟเดต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเดพเด•เตเด•เต‡เดœเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด‚ เดชเดฟเดจเตเดจเต€เดŸเต เด…เดตเดฏเต† เดตเตเดฏเดคเตเดฏเดธเตเดค เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเด•เดณเดฟเดฒเต‡เด•เตเด•เต เดŽเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เตพ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เดชเตเดชเต†เดŸเตเดŸ เดฎเดพเตผเด—เดฎเดพเดฏเดฟ เดฎเดพเดฑเดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เด’เดฐเต เดธเตเดชเตเดฐเดฟเด‚เด—เต เดฌเต‚เดŸเตเดŸเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเตˆเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดตเตเดฏเดคเตเดฏเดธเตเดค เดตเดดเดฟเด•เตพ เดˆ เดฒเต‡เด–เดจเด‚ เด‰เตพเด•เตเด•เตŠเดณเตเดณเตเดจเตเดจเต:

  • เด’เดฐเต เดกเต‹เด•เตเด•เตผ เดซเดฏเตฝ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เดกเต‹เด•เตเด•เตผ เด‡เดฎเต‡เดœเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต,
  • Cloud-Native Buildpack เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด‰เดฑเดตเดฟเดŸเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เด’เดฐเต OCI เด‡เดฎเต‡เดœเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต,
  • เด•เต‚เดŸเดพเดคเต† เดฎเตพเดŸเตเดŸเดฟ-เดŸเดฏเตผ เดŸเต‚เดณเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต JAR-เดจเตเดฑเต† เดญเดพเด—เด™เตเด™เตพ เดตเตเดฏเดคเตเดฏเดธเตเดค เดฒเต†เดฏเดฑเตเด•เดณเดพเดฏเดฟ เดตเต‡เตผเดคเดฟเดฐเดฟเดšเตเดšเตเด•เตŠเดฃเตเดŸเต เดฑเตบ-เดŸเตˆเด‚ เด‡เดฎเต‡เดœเต เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป.

 เด•เต‹เดกเต เด‰เดฆเดพเดนเดฐเดฃเด‚

เดˆ เดฒเต‡เด–เดจเด‚ เดตเตผเด•เตเด•เดฟเด‚เด—เต เด•เต‹เดกเต เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเต‹เดŸเตŠเดชเตเดชเดฎเตเดฃเตเดŸเต GitHub-เตฝ .

เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เดŸเต†เตผเดฎเดฟเดจเต‹เดณเดœเดฟ

เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เดŸเต†เตผเดฎเดฟเดจเต‹เดณเดœเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดžเด™เตเด™เตพ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเด‚:

  • เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เดšเดฟเดคเตเดฐเด‚: เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเดจเตเดฑเต† เดซเดฏเตฝ. เดฌเดฟเตฝเดกเต เดŸเต‚เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดšเตเดšเต เดžเด™เตเด™เตพ เดžเด™เตเด™เดณเตเดŸเต† เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเต† เด’เดฐเต เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเตผ เด‡เดฎเต‡เดœเดพเด•เตเด•เดฟ เดฎเดพเดฑเตเดฑเตเด‚.
  • เด•เดฃเตเดŸเต†เดฏเตเดจเตผ: เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เด‡เดฎเต‡เดœเดฟเดจเตเดฑเต† เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเดฌเดฟเตพ เด‰เดฆเดพเดนเดฐเดฃเด‚.
  • เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เดŽเดžเตเดšเดฟเตป: เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด‰เดคเตเดคเดฐเดตเดพเดฆเดฟเดคเตเดคเดฎเตเดณเตเดณ เดกเต†เดฎเตบ เดชเตเดฐเด•เตเดฐเดฟเดฏ.
  • เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เดนเต‹เดธเตเดฑเตเดฑเต: เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เดŽเดžเตเดšเดฟเตป เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เดนเต‹เดธเตเดฑเตเดฑเต เด•เดฎเตเดชเตเดฏเต‚เดŸเตเดŸเตผ.
  • เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เดฐเดœเดฟเดธเตเดŸเตเดฐเดฟ: เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเตผ เดšเดฟเดคเตเดฐเด‚ เดชเตเดฐเดธเดฟเดฆเตเดงเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เดตเดฟเดคเดฐเดฃเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เดชเตŠเดคเตเดตเดพเดฏ เดฒเตŠเด•เตเด•เต‡เดทเตป.
  • 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 เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดธเตƒเดทเตเดŸเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เด‡เดตเดฟเดŸเต† เดžเด™เตเด™เตพ 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

เดกเตˆเดตเต เด•เดฎเดพเตปเดกเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเดฟเดจเตเดฑเต† เด’เดฐเต เดญเดพเด—เด‚ เด‡เดคเดพ: 

เด’เดฐเต เดธเตเดชเตเดฐเดฟเด‚เด—เต เดฌเต‚เดŸเตเดŸเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดพเดฏเดฟ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต เดšเต†เดฏเตเดค เดกเต‹เด•เตเด•เตผ เด‡เดฎเต‡เดœเตเด•เตพ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจเต

เดจเดฎเตเด•เตเด•เต เด•เดพเดฃเดพเดจเดพเด•เตเดจเตเดจเดคเตเดชเต‹เดฒเต†, เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดฒเต†เดฏเตผ เดšเดฟเดคเตเดฐเดคเตเดคเดฟเดจเตเดฑเต† เดตเดฒเตเดชเตเดชเดคเตเดคเดฟเดจเตเดฑเต† เด’เดฐเต เดชเตเดฐเดงเดพเดจ เดญเดพเด—เด‚ เด‰เตพเด•เตเด•เตŠเดณเตเดณเตเดจเตเดจเต. เดžเด™เตเด™เดณเตเดŸเต† เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเดจเตเดฑเต† เดญเดพเด—เดฎเดพเดฏเดฟ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดตเดฟเดญเดพเด—เด™เตเด™เดณเดฟเตฝ เดˆ เดฒเต†เดฏเดฑเดฟเดจเตเดฑเต† เดตเดฒเตเดชเตเดชเด‚ เด•เตเดฑเดฏเตเด•เตเด•เดพเตป เดžเด™เตเด™เตพ เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต.

เดฌเดฟเตฝเดกเตเดชเดพเด•เตเด•เต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เด‡เดฎเต‡เดœเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต

เด…เดธเด‚เดฌเตเดฒเดฟ เดชเดพเด•เตเด•เต‡เดœเตเด•เตพ (เดฌเดฟเตฝเดกเตเดชเดพเด•เตเด•เตเด•เตพ) เดŽเดจเตเดจเดคเต เดธเต‹เดดเตโ€Œเดธเต เด•เต‹เดกเดฟเตฝ เดจเดฟเดจเตเดจเต เด’เดฐเต เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเตผ เด‡เดฎเต‡เดœเต เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เดพเตป เด’เดฐเต เดธเต‡เดตเดจ (PAAS) เด“เดซเดฑเตเด•เดณเดพเดฏเดฟ เดตเดฟเดตเดฟเดง เดชเตเดฒเดพเดฑเตเดฑเตโ€Œเดซเต‹เด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดชเตŠเดคเต เดชเดฆเดฎเดพเดฃเต. เด‡เดคเต 2011-เตฝ เดนเต†เดฑเต‹เด•เต เดธเดฎเดพเดฐเด‚เดญเดฟเดšเตเดšเต, เด…เดคเดฟเดจเตเดถเต‡เดทเด‚ เด•เตเดฒเต—เดกเต เดซเต—เดฃเตเดŸเดฑเดฟ, เด—เต‚เด—เดฟเตพ เด†เดชเตเดชเต เดŽเดžเตเดšเดฟเตป, เด—เดฟเดฑเตเดฑเตโ€Œเดฒเดพเดฌเต, เด•เตเดจเต‡เดฑเตเดฑเต€เดตเต เดŽเดจเตเดจเดฟเดตเดฏเตเด‚ เดฎเดฑเตเดฑเต เดจเดฟเดฐเดตเดงเดฟ เดธเตเดฅเดพเดชเดจเด™เตเด™เดณเตเด‚ เด‡เดคเต เดธเตเดตเต€เด•เดฐเดฟเดšเตเดšเต.

เด’เดฐเต เดธเตเดชเตเดฐเดฟเด‚เด—เต เดฌเต‚เดŸเตเดŸเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดพเดฏเดฟ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต เดšเต†เดฏเตเดค เดกเต‹เด•เตเด•เตผ เด‡เดฎเต‡เดœเตเด•เตพ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจเต

เด•เตเดฒเต—เดกเต เดฌเดฟเตฝเดกเต เดชเดพเด•เตเด•เต‡เดœเตเด•เดณเตเดŸเต† เดชเตเดฐเดฏเต‹เดœเดจเด‚

เด‡เดฎเต‡เดœเตเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป เดฌเดฟเตฝเดกเตเดชเดพเด•เตเด•เต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดฑเต† เด’เดฐเต เดชเตเดฐเดงเดพเดจ เดจเต‡เดŸเตเดŸเด‚ เด‡เดคเดพเดฃเต เด‡เดฎเต‡เดœเต เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เด•เต‡เดจเตเดฆเตเดฐเต€เด•เตƒเดคเดฎเดพเดฏเดฟ (เดฌเดฟเตฝเดกเตผ) เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เดฌเดฟเตฝเดกเตผ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดŽเดฒเตเดฒเดพ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เดณเดฟเดฒเต‡เด•เตเด•เตเด‚ เดชเตเดฐเดšเดฐเดฟเดชเตเดชเดฟเด•เตเด•เดพเดจเตเด‚ เด•เดดเดฟเดฏเตเด‚.

เดฌเดฟเตฝเดกเต เดชเดพเด•เตเด•เต‡เดœเตเด•เตพ เดชเตเดฒเดพเดฑเตเดฑเตโ€Œเดซเต‹เดฎเดฟเดฒเต‡เด•เตเด•เต เด•เตผเดถเดจเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เด•เตเดฒเต—เดกเต-เดจเต‡เดฑเตเดฑเต€เดตเต เดฌเดฟเตฝเดกเตโ€Œเดชเดพเด•เตเด•เตเด•เตพ 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

เดœเดฟเดฌเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเตผ เด‡เดฎเต‡เดœเต เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเดจเตเดจเต

เดธเต‹เดดเตโ€Œเดธเต เด•เต‹เดกเดฟเตฝ เดจเดฟเดจเตเดจเต เด’เดฐเต เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเตผ เด‡เดฎเต‡เดœเต เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดฌเดฆเตฝ เดฐเต€เดคเดฟ เดจเตฝเด•เตเดจเตเดจ 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

เดฎเตเด•เดณเดฟเดฒเตเดณเตเดณ Maven เด•เดฎเดพเตปเดกเต เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดค เดถเต‡เดทเด‚, เดจเดฎเตเด•เตเด•เต เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเต เดฒเดญเดฟเด•เตเด•เตเด‚:

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

เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เด‡เดฎเต‡เดœเต เดธเตƒเดทเตเดŸเดฟเดšเตเดšเต เดฐเดœเดฟเดธเตเดŸเตเดฐเดฟเดฏเดฟเตฝ เดธเตเดฅเดพเดชเดฟเดšเตเดšเดคเดพเดฏเดฟ เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเต เด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจเต.

เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต เดšเต†เดฏเตเดค เด‡เดฎเต‡เดœเตเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดชเตเดฐเดšเต‹เดฆเดจเด™เตเด™เดณเตเด‚ เดธเดพเด™เตเด•เต‡เดคเดฟเด•เดคเด•เดณเตเด‚

เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเดจเดพเดฏเดฟ เดžเด™เตเด™เตพเด•เตเด•เต เดฐเดฃเตเดŸเต เดชเตเดฐเดงเดพเดจ เด•เดพเดฐเดฃเด™เตเด™เดณเตเดฃเตเดŸเต:

  • เด‰เดคเตเดชเดพเดฆเดจเด•เตเดทเดฎเดค: เด’เดฐเต เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เด“เตผเด•เตเด•เดธเตเดŸเตเดฐเต‡เดทเตป เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเตฝ, เด’เดฐเต เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เด‡เดฎเต‡เดœเต เด‡เดฎเต‡เดœเต เดฐเดœเดฟเดธเตเดŸเตเดฐเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เดŽเดžเตเดšเดฟเตป เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เดนเต‹เดธเตเดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เดตเต€เดฃเตเดŸเต†เดŸเตเด•เตเด•เตเดจเตเดจเต. เดˆ เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเต† เด†เดธเต‚เดคเตเดฐเดฃเด‚ เดŽเดจเตเดจเต เดตเดฟเดณเดฟเด•เตเด•เตเดจเตเดจเต. เดฐเดœเดฟเดธเตเดŸเตเดฐเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเดฒเดฟเดฏ เดšเดฟเดคเตเดฐเด™เตเด™เตพ เดตเดฒเดฟเด•เตเด•เตเดจเตเดจเดคเต เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเตผ เด“เตผเด•เตเด•เดธเตโ€ŒเดŸเตเดฐเต‡เดทเตป เดธเดฟเดธเตเดฑเตเดฑเด™เตเด™เดณเดฟเตฝ เดฆเตˆเตผเด˜เตเดฏเดฎเต‡เดฑเดฟเดฏ เดทเต†เดกเตเดฏเต‚เดณเดฟเด‚เด—เต เดธเดฎเดฏเดคเตเดคเดฟเดจเตเด‚ CI เดชเตˆเดชเตเดชเต เดฒเตˆเดจเตเด•เดณเดฟเตฝ เดฆเตˆเตผเด˜เตเดฏเดฎเต‡เดฑเดฟเดฏ เดจเดฟเตผเดฎเตเดฎเดพเดฃ เดธเดฎเดฏเดคเตเดคเดฟเดจเตเด‚ เด•เดพเดฐเดฃเดฎเดพเด•เตเดจเตเดจเต.
  • เดธเตเดฐเด•เตเดท: เดตเดฒเดฟเดฏ เดšเดฟเดคเตเดฐเด™เตเด™เตพเด•เตเด•เต เด•เต‡เดŸเตเดชเดพเดŸเตเด•เตพเด•เตเด•เตเดณเตเดณ เดตเดฒเดฟเดฏเตŠเดฐเต เดเดฐเดฟเดฏเดฏเตเด‚ เด‰เดฃเตเดŸเต.

เด’เดฐเต เดกเต‹เด•เตเด•เตผ เด‡เดฎเต‡เดœเดฟเตฝ เดฒเต†เดฏเดฑเตเด•เดณเตเดŸเต† เด’เดฐเต เดถเต‡เด–เดฐเด‚ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดต เด“เดฐเต‹เดจเตเดจเตเด‚ เดžเด™เตเด™เดณเตเดŸเต† เดกเต‹เด•เตเด•เตผเดซเดฏเดฒเดฟเดฒเต† เด’เดฐเต เดจเดฟเตผเดฆเตเดฆเต‡เดถเดคเตเดคเต† เดชเตเดฐเดคเดฟเดจเดฟเดงเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต. เด“เดฐเต‹ เดฒเต†เดฏเดฑเตเด‚ เด…เดฃเตเดŸเตผเดฒเดฏเดฟเด‚เด—เต เดฒเต†เดฏเดฑเดฟเดฒเต† เดฎเดพเดฑเตเดฑเด™เตเด™เดณเตเดŸเต† เด’เดฐเต เดกเต†เตฝเดฑเตเดฑเดฏเต† เดชเตเดฐเดคเดฟเดจเดฟเดงเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดจเดฎเตเดฎเตพ เดฐเดœเดฟเดธเตเดŸเตเดฐเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เด’เดฐเต เดกเต‹เด•เตเด•เตผ เด‡เดฎเต‡เดœเต เดตเดฒเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เด…เดคเต เดฒเต†เดฏเดฑเตเด•เดณเดพเดฏเดฟ เดตเดฒเดฟเดšเตเดšเต เดนเต‹เดธเตเดฑเตเดฑเดฟเตฝ เด•เดพเดทเต† เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

เดธเตเดชเตเดฐเดฟเด‚เด—เต เดฌเต‚เดŸเตเดŸเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต "เด•เตŠเดดเตเดชเตเดชเต เดœเดพเตผ" เดกเดฟเดซเต‹เตพเดŸเตเดŸเต เดชเดพเด•เตเด•เต‡เดœเดฟเด‚เด—เต เดซเต‹เตผเดฎเดพเดฑเตเดฑเดพเดฏเดฟ. เด•เดŸเตเดŸเดฟเดฏเตเดณเตเดณ JAR-เตฝ เดจเต‹เด•เตเด•เตเดฎเตเดชเต‹เตพ, เดฎเตเดดเตเดตเตป JAR-เดจเตเดฑเต†เดฏเตเด‚ เดตเดณเดฐเต† เดšเต†เดฑเดฟเดฏเตŠเดฐเต เดญเดพเด—เด‚ เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด‰เดฃเตเดŸเดพเด•เตเด•เตเดจเตเดจเดคเต. เดฎเดฟเด•เตเด•เดชเตเดชเต‹เดดเตเด‚ เดฎเดพเดฑเตเดจเตเดจ เดญเดพเด—เดฎเดพเดฃเดฟเดคเต. เดฌเดพเด•เตเด•เดฟเดฏเตเดณเตเดณเดคเต เดธเตเดชเตเดฐเดฟเด‚เด—เต เดซเตเดฐเต†เดฏเดฟเด‚เดตเตผเด•เตเด•เต เดกเดฟเดชเตปเดกเตปเดธเดฟเด•เตพ เด‰เตพเด•เตเด•เตŠเดณเตเดณเตเดจเตเดจเต.

เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเตป เดซเต‹เตผเดฎเตเดฒ เดธเตเดชเตเดฐเดฟเด‚เด—เต เดซเตเดฐเต†เดฏเดฟเด‚เดตเตผเด•เตเด•เต เดกเดฟเดชเตปเดกเตปเดธเดฟเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเตเดฐเดคเตเดฏเต‡เด• เดคเดฒเดคเตเดคเดฟเตฝ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเต† เดตเต‡เตผเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต† เด•เต‡เดจเตเดฆเตเดฐเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เด•เดŸเตเดŸเดฟเดฏเตเดณเตเดณ JAR เดซเดฏเดฒเดฟเดจเตเดฑเต† เดญเต‚เดฐเดฟเดญเดพเด—เดตเตเด‚ เดฐเต‚เดชเดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจ เดกเดฟเดชเตปเดกเตปเดธเดฟ เดฒเต†เดฏเตผ, เด’เดฐเต เดคเดตเดฃ เดฎเดพเดคเตเดฐเด‚ เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดนเต‹เดธเตเดฑเตเดฑเต เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเตฝ เด•เดพเดทเต† เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเตเด•เดณเดฟเดฒเตเด‚ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเตผ เดทเต†เดกเตเดฏเต‚เดณเดฟเด‚เด—เดฟเดฒเตเด‚ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเดฑเต† เดจเต‡เตผเดคเตเดค เดชเดพเดณเดฟ เดฎเดพเดคเตเดฐเดฎเต‡ เดตเดฒเดฟเดšเตเดšเดฟเดŸเตเด•เดฏเตเดณเตเดณเต‚. เดˆ เดกเดฏเด—เตเดฐเดพเดฎเดฟเตฝ เด•เดพเดฃเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต เดชเต‹เดฒเต†:

เด’เดฐเต เดธเตเดชเตเดฐเดฟเด‚เด—เต เดฌเต‚เดŸเตเดŸเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดพเดฏเดฟ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต เดšเต†เดฏเตเดค เดกเต‹เด•เตเด•เตผ เด‡เดฎเต‡เดœเตเด•เตพ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจเต

เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดตเดฟเดญเดพเด—เด™เตเด™เดณเดฟเตฝ, เด’เดฐเต เดธเตเดชเตเดฐเดฟเด‚เด—เต เดฌเต‚เดŸเตเดŸเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดพเดฏเดฟ เดˆ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต เดšเต†เดฏเตเดค เดšเดฟเดคเตเดฐเด™เตเด™เตพ เดŽเด™เตเด™เดจเต† เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเต เดžเด™เตเด™เตพ เดจเต‹เด•เตเด•เดพเด‚.

เดฌเดฟเตฝเดกเตเดชเดพเด•เตเด•เต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เดธเตเดชเตเดฐเดฟเด‚เด—เต เดฌเต‚เดŸเตเดŸเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดพเดฏเดฟ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต เดšเต†เดฏเตเดค เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เด‡เดฎเต‡เดœเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต

เดธเตเดชเตเดฐเดฟเด‚เด—เต เดฌเต‚เดŸเตเดŸเต 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 เด‡เดฎเต‡เดœเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเดจเตเด‚ เด•เดดเดฟเดฏเตเด‚.

เดžเด™เตเด™เตพ เดกเต‹เด•เตเด•เตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดฒเต†เดฏเดฑเตเด•เตพ เดŽเด•เตโ€Œเดธเตโ€ŒเดŸเตเดฐเดพเด•เตโ€Œเดฑเตเดฑเตเดšเต†เดฏเตเดฏเดพเดจเตเด‚ เด…เดต เด…เดจเตเดคเดฟเดฎ เดšเดฟเดคเตเดฐเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดชเด•เตผเดคเตเดคเดพเดจเตเด‚ เดžเด™เตเด™เตพ เดฐเดฃเตเดŸเต เด…เดงเดฟเด• เด˜เดŸเตเดŸเด™เตเด™เตพ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต.

เดฒเต‡เดฏเดฑเดฟเด‚เด—เต เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดฎเดพเด•เตเด•เดฟ 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

เดธเตโ€Œเดจเดพเดชเตโ€Œเดทเต‹เดŸเตเดŸเต เด…เดŸเด™เตเด™เดฟเดฏเดฟเดŸเตเดŸเดฟเดฒเตเดฒเดพเดคเตเดค เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เด†เดถเตเดฐเดฟเดคเดคเตเดตเด‚

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 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