เด’เดฐเต CI/CD เดถเตƒเด‚เด–เดฒ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดกเต‹เด•เตเด•เตผ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดตเตผเด•เตเด•เต เด“เดŸเตเดŸเต‹เดฎเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต

90-เด•เดณเตเดŸเต† เด…เดตเดธเดพเดจเดคเตเดคเดฟเดฒเดพเดฃเต เดžเดพเตป เดŽเตปเตเดฑเต† เด†เดฆเตเดฏ เดตเต†เดฌเตโ€Œเดธเตˆเดฑเตเดฑเตเด•เตพ เดŽเดดเตเดคเดฟเดฏเดคเต. เด…เด•เตเด•เดพเดฒเดคเตเดคเต เด…เดตเดฐเต† เดชเตเดฐเดตเตผเดคเตเดคเดจ เด•เตเดฐเดฎเดคเตเดคเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเดคเต เดตเดณเดฐเต† เดŽเดณเตเดชเตเดชเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเต. เดšเดฟเดฒ เดชเด™เตเด•เดฟเดŸเตเดŸ เดนเต‹เดธเตเดฑเตเดฑเดฟเด‚เด—เดฟเตฝ เด’เดฐเต เด…เดชเตเดชเดพเดšเตเดšเต† เดธเต†เตผเดตเตผ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเตเดจเตเดจเต, เดจเดฟเด™เตเด™เตพเด•เตเด•เต FTP เดตเดดเดฟ เดˆ เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต เดฒเต‹เด—เดฟเตป เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚. ftp://ftp.example.com. เดคเตเดŸเตผเดจเตเดจเต เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเต‡เดฐเตเด‚ เดชเดพเดธเตโ€Œเดตเต‡เดกเตเด‚ เดจเตฝเด•เดฟ เดซเดฏเดฒเตเด•เตพ เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต เด…เดชเตโ€Œเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เดตเตเดฏเดคเตเดฏเดธเตเดค เดธเดฎเดฏเด™เตเด™เดณเตเดฃเตเดŸเดพเดฏเดฟเดฐเตเดจเตเดจเต, เดŽเดฒเตเดฒเดพเด‚ เด‡เดชเตเดชเต‹เดดเดคเตเดคเต‡เดคเดฟเดจเต‡เด•เตเด•เดพเตพ เดฒเดณเดฟเดคเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเต.

เด’เดฐเต CI/CD เดถเตƒเด‚เด–เดฒ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดกเต‹เด•เตเด•เตผ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดตเตผเด•เตเด•เต เด“เดŸเตเดŸเต‹เดฎเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต

เด…เดคเดฟเดจเต เดถเต‡เดทเดฎเตเดณเตเดณ เดฐเดฃเตเดŸเต เดฆเดถเดพเดฌเตเดฆเด™เตเด™เดณเดฟเตฝ เดŽเดฒเตเดฒเดพเด‚ เด’เดฐเตเดชเดพเดŸเต เดฎเดพเดฑเดฟ. เดตเต†เดฌเตโ€Œเดธเตˆเดฑเตเดฑเตเด•เตพ เด•เต‚เดŸเตเดคเตฝ เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดพเดฏเดฟเดคเตเดคเต€เตผเดจเตเดจเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต; เด…เดต เดชเตเดฐเตŠเดกเด•เตเดทเดจเดฟเดฒเต‡เด•เตเด•เต เดฑเดฟเดฒเต€เดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เด…เดต เด•เต‚เดŸเตเดŸเดฟเดšเตเดšเต‡เตผเด•เตเด•เดฃเด‚. เด’เดฐเตŠเดฑเตเดฑ เดธเต†เตผเดตเตผ เดฒเต‹เดกเต เดฌเดพเดฒเตปเดธเดฑเตเด•เตพเด•เตเด•เต เดชเดฟเดจเตเดจเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เดจเดฟเดฐเดตเดงเดฟ เดธเต†เตผเดตเดฑเตเด•เตพ เด†เดฏเดฟ เดฎเดพเดฑเดฟ, เด•เต‚เดŸเดพเดคเต† เดชเดคเดฟเดชเตเดชเต เดจเดฟเดฏเดจเตเดคเตเดฐเดฃ เดธเด‚เดตเดฟเดงเดพเดจเด™เตเด™เดณเตเดŸเต† เด‰เดชเดฏเต‹เด—เด‚ เดธเดพเดงเดพเดฐเดฃเดฎเดพเดฏเดฟ.

เดŽเตปเตเดฑเต† เดธเตเดตเด•เดพเดฐเตเดฏ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เดŽเดจเดฟเด•เตเด•เต เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเตเดจเตเดจเต. เด’เดฐเต เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดฒเต‚เดŸเต† เดธเตˆเดฑเตเดฑเดฟเดจเต† เดชเตเดฐเตŠเดกเด•เตเดทเดจเดฟเตฝ เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เดพเดจเตเดณเตเดณ เด•เดดเดฟเดตเต เดŽเดจเดฟเด•เตเด•เต เด†เดตเดถเตเดฏเดฎเดพเดฃเต†เดจเตเดจเต เดŽเดจเดฟเด•เตเด•เดฑเดฟเดฏเดพเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเต: เด’เดฐเต เดฌเตเดฐเดพเดžเตเดšเดฟเดฒเต‡เด•เตเด•เต เด•เต‹เดกเต เดŽเดดเตเดคเตเด• master GitHub-เตฝ. เด•เต‚เดŸเดพเดคเต†, เดŽเตปเตเดฑเต† เดšเต†เดฑเดฟเดฏ เดตเต†เดฌเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตปเตเดฑเต† เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เด‰เดฑเดชเตเดชเดพเด•เตเด•เดพเตป, เด’เดฐเต เดตเดฒเดฟเดฏ เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เด•เตเดฒเดธเตเดฑเตเดฑเตผ เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเดพเดจเต‹ เดกเต‹เด•เตเด•เตผ เดธเตเดตเดพเด‚ เดธเดพเด™เตเด•เต‡เดคเดฟเด•เดตเดฟเดฆเตเดฏ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดจเต‹ เดชเต‹เดกเตเด•เดณเตเด‚ เดเดœเตปเตเดฑเตเดฎเดพเดฐเตเด‚ เดฎเดฑเตเดฑเต เดŽเดฒเตเดฒเดพเดคเตเดคเดฐเด‚ เดธเต†เตผเดตเดฑเตเด•เดณเตเด‚ เดจเดฟเดฒเดจเดฟเตผเดคเตเดคเดพเดจเต‹ เดžเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒเต†เดจเตเดจเต เดŽเดจเดฟเด•เตเด•เดฑเดฟเดฏเดพเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเต. เดธเด™เตเด•เต€เตผเดฃเตเดฃเดคเด•เตพ. เดœเต‹เดฒเดฟ เด•เดดเดฟเดฏเตเดจเตเดจเดคเตเดฐ เดŽเดณเตเดชเตเดชเดฎเดพเด•เตเด•เตเด• เดŽเดจเตเดจ เดฒเด•เตเดทเตเดฏเด‚ เด•เตˆเดตเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดŽเดจเดฟเด•เตเด•เต CI/CD เดชเดฐเดฟเดšเดฏเดชเตเดชเต†เดŸเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต.

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดšเต†เดฑเดฟเดฏ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เด‰เดฃเตเดŸเต†เด™เตเด•เดฟเตฝ (เดˆ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ, เด’เดฐเต Node.js เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต) เดˆ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเตปเตเดฑเต† เดตเดฟเดจเตเดฏเดพเดธเด‚ เดŽเด™เตเด™เดจเต† เด“เดŸเตเดŸเต‹เดฎเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเดพเดฎเต†เดจเตเดจเต เด…เดฑเดฟเดฏเดพเตป เดจเดฟเด™เตเด™เตพ เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เด™เตเด•เดฟเตฝ, เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเตฝ เดธเด‚เดญเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต เด‰เตฝเดชเตเดชเดพเดฆเดจเดคเตเดคเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดตเดฏเตเดฎเดพเดฏเดฟ เด•เตƒเดคเตเดฏเดฎเดพเดฏเดฟ เดชเตŠเดฐเตเดคเตเดคเดชเตเดชเต†เดŸเตเดจเตเดจเตเดตเต†เดจเตเดจเต เด‰เดฑเดชเตเดชเดพเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดžเดพเตป เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดฃเตเดŸเดพเด•เตเดฎเต†เดจเตเดจเต เด•เดฐเตเดคเตเดจเตเดจเต.

เดฎเตเตปเดตเตเดฏเดตเดธเตเดฅเด•เตพ

เดˆ เดฒเต‡เด–เดจเด‚ เดตเดพเดฏเดฟเด•เตเด•เตเดจเตเดจเดฏเดพเตพเด•เตเด•เต เด•เดฎเดพเตปเดกเต เดฒเตˆเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเด‚ เดฌเดพเดทเต เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตเด•เตพ เดŽเดดเตเดคเตเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเด‚ เด…เดŸเดฟเดธเตเดฅเดพเดจ เดงเดพเดฐเดฃ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเดฎเต†เดจเตเดจเต เดชเตเดฐเดคเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต. เด•เต‚เดŸเดพเดคเต†, เด…เดฏเดพเตพเด•เตเด•เต เด…เด•เตเด•เต—เดฃเตเดŸเตเด•เตพ เด†เดตเดถเตเดฏเดฎเดพเดฃเต เดŸเตเดฐเดพเดตเดฟเดธเต เดธเดฟเด ะธ เดกเต‹เด•เตเด•เตผ เดนเดฌเต.

เดฒเด•เตเดทเตเดฏเด™เตเด™เตพ

เดˆ เดฒเต‡เด–เดจเดคเตเดคเต† เดจเดฟเดฐเตเดชเดพเดงเดฟเด•เดฎเดพเดฏเดฟ "เดŸเตเดฏเต‚เดŸเตเดŸเต‹เดฑเดฟเดฏเตฝ" เดŽเดจเตเดจเต เดตเดฟเดณเดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเต เดžเดพเตป เดชเดฑเดฏเดฟเดฒเตเดฒ. เด‡เดคเต เดžเดพเตป เดชเด เดฟเดšเตเดš เด•เดพเดฐเตเดฏเด™เตเด™เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด’เดฐเต เด“เดŸเตเดŸเต‹เดฎเต‡เดฑเตเดฑเดกเต เดชเดพเดธเดฟเตฝ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดฟเดฏ เดชเตเดฐเตŠเดกเด•เตเดทเดจเดฟเดฒเต‡เด•เตเด•เต เด•เต‹เดกเต เดชเดฐเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เดŽเดจเดฟเด•เตเด•เต เด…เดจเตเดฏเต‹เดœเตเดฏเดฎเดพเดฏ เดชเตเดฐเด•เตเดฐเดฟเดฏ เดตเดฟเดตเดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจ เด’เดฐเต เดฐเต‡เด–เดฏเดพเดฃเดฟเดคเต.

เด‡เดคเดพเดฃเต เดŽเตปเตเดฑเต† เดตเตผเด•เตเด•เตเดซเตเดฒเต‹ เด…เดตเดธเดพเดจเดฟเดšเตเดšเดคเต.

เด’เดดเดฟเด•เต†เดฏเตเดณเตเดณ เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟ เดฌเตเดฐเดพเดžเตเดšเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เดธเตเดฑเตเดฑเต เดšเต†เดฏเตเดค เด•เต‹เดกเดฟเดจเดพเดฏเดฟ master, เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เดจเดŸเดคเตเดคเตเดจเตเดจเต:

  • เดŸเตเดฐเดพเดตเดฟเดธเต เดธเดฟเดเดฏเตเดŸเต† เดชเดฆเตเดงเดคเดฟ เดจเดฟเตผเดฎเตเดฎเดพเดฃเด‚ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต.
  • เดŽเดฒเตเดฒเดพ เดฏเต‚เดฃเดฟเดฑเตเดฑเต, เด‡เตปเตเดฑเด—เตเดฐเต‡เดทเตป, เดŽเตปเดกเต-เดŸเต-เดŽเตปเดกเต เดŸเต†เดธเตเดฑเตเดฑเตเด•เดณเตเด‚ เดจเดŸเดคเตเดคเตเดจเตเดจเต.

เด‰เตพเดชเตเดชเต†เดŸเตเดจเตเดจ เด•เต‹เดกเดฟเดจเต เดฎเดพเดคเตเดฐเด‚ master, เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดต เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเต:

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

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

เดŽเดจเตเดคเดพเดฃเต CI/CD?

CI/CD เดŽเดจเตเดจ เดšเตเดฐเตเด•เตเด•เต†เดดเตเดคเตเดคเต "เดคเตเดŸเตผเดšเตเดšเดฏเตเดณเตเดณ เดธเด‚เดฏเต‹เดœเดจเด‚/เดคเตเดŸเตผเดšเตเดšเดฏเตเดณเตเดณ เดตเดฟเดจเตเดฏเดพเดธเด‚" เดŽเดจเตเดจเดพเดฃเต.

โ–เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดธเด‚เดฏเต‹เดœเดจเด‚

เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเตปเตเดฑเต† เดชเตเดฐเดงเดพเดจ เดธเต‹เดดเตเดธเต เด•เต‹เดกเต เดถเต‡เด–เดฐเดคเตเดคเดฟเตฝ (เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เด’เดฐเต เดฌเตเดฐเดพเดžเตเดšเต) เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเตผ เดชเตเดฐเดคเดฟเดœเตเดžเดพเดฌเดฆเตเดงเดฎเดพเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเดพเดฃเต เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดเด•เต€เด•เดฐเดฃเด‚. master). เด…เดคเต‡เดธเดฎเดฏเด‚, เด“เดŸเตเดŸเต‹เดฎเต‡เดฑเตเดฑเดกเต เดŸเต†เดธเตเดฑเตเดฑเดฟเด‚เด—เดฟเดฒเต‚เดŸเต† เด•เต‹เดกเดฟเตปเตเดฑเต† เด—เตเดฃเดจเดฟเดฒเดตเดพเดฐเด‚ เด‰เดฑเดชเตเดชเดพเด•เตเด•เตเดจเตเดจเต.

โ–เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดตเดฟเดจเตเดฏเดพเดธเด‚

เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดตเดฟเดจเตเดฏเดพเดธเด‚ เดŽเดจเตเดจเดคเต เด‰เตฝเดชเตเดชเดพเดฆเดจเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เด•เต‹เดกเดฟเตปเตเดฑเต† เดชเดคเดฟเดตเต, เดธเตเดตเดฏเดฎเต‡เดตเดฏเตเดณเตเดณ เดตเดฟเดจเตเดฏเดพเดธเดฎเดพเดฃเต. CI/CD เดšเตเดฐเตเด•เตเด•เต†เดดเตเดคเตเดคเดฟเตปเตเดฑเต† เดฐเดฃเตเดŸเดพเด‚ เดญเดพเด—เด‚ เดšเดฟเดฒเดชเตเดชเต‹เตพ "เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดกเต†เดฒเดฟเดตเดฑเดฟ" เดŽเดจเตเดจเต เด‰เดšเตเดšเดฐเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเต. เด‡เดคเต เด…เดŸเดฟเดธเตเดฅเดพเดจเดชเดฐเดฎเดพเดฏเดฟ "เดคเตเดŸเตผเดšเตเดšเดฏเตเดณเตเดณ เดตเดฟเดจเตเดฏเดพเดธเด‚" เดชเต‹เดฒเต†เดฏเดพเดฃเต, เดŽเดจเตเดจเดพเตฝ "เดคเตเดŸเตผเดšเตเดšเดฏเตเดณเตเดณ เดกเต†เดฒเดฟเดตเดฑเดฟ" เดŽเดจเตเดจเดคเต เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดตเดฟเดจเตเดฏเดพเดธ เดชเตเดฐเด•เตเดฐเดฟเดฏ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดธเตเดตเดฎเต‡เดงเดฏเดพ เดธเตเดฅเดฟเดฐเต€เด•เดฐเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเดฟเตปเตเดฑเต† เด†เดตเดถเตเดฏเด•เดคเดฏเต† เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต.

เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต

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

เดŽเตปเตเดฑเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป Node.js เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดฏเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดŽเด•เตเดธเตเดชเตเดฐเดธเต เดธเต†เตผเดตเดฑเดพเดฃเต, เด’เดฑเตเดฑ-เดชเต‡เดœเต เดฑเดฟเดฏเดพเด•เตเดฑเตเดฑเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดจเตฝเด•เตเด•เดฏเตเด‚ เด’เดฐเต เดธเตเดฐเด•เตเดทเดฟเดค เดธเต†เตผเดตเตผ เดธเตˆเดกเต API เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดˆ เดตเดพเดธเตเดคเตเดตเดฟเดฆเตเดฏเดฏเดฟเตฝ เด•เดฃเตเดŸเต†เดคเตเดคเดพเดจเดพเด•เตเดจเตเดจ เดคเดจเตเดคเตเดฐเด‚ เดชเดฟเดจเตเดคเตเดŸเดฐเตเดจเตเดจเต เดจเตฝเด•เดฟเดฏเดคเต เดชเต‚เตผเดฃเตเดฃ เดธเตเดฑเตเดฑเดพเด•เตเด•เต เดชเตเดฐเดพเดฎเดพเดฃเต€เด•เดฐเดฃ เด—เตˆเดกเต.

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

เดกเต‹เด•เตเด•เตผ

เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตˆเดธเต‡เดทเตป เดธเดพเด™เตเด•เต‡เดคเดฟเด•เดตเดฟเดฆเตเดฏเดฏเตเด•เตเด•เต เดจเดจเตเดฆเดฟ, เดกเต‹เด•เตเด•เตผ เดชเตเดฒเดพเดฑเตเดฑเตโ€Œเดซเต‹เด‚ เดคเดจเตเดจเต† เดตเตเดฏเดคเตเดฏเดธเตโ€Œเดค เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเด•เดณเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเตเดฃเตเดŸเต†เด™เตเด•เดฟเดฒเตเด‚, เด’เดฐเต‡ เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดฏเดฟเตฝ เด…เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ เดŽเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เดตเดฟเดคเดฐเดฃเด‚ เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เดพเดจเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเดจเตเด‚ เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เด‰เดชเด•เดฐเดฃเดฎเดพเดฃเต เดกเต‹เด•เตเด•เตผ. เด†เดฆเตเดฏเด‚, เดŽเดจเดฟเด•เตเด•เต เดกเต‹เด•เตเด•เตผ เด•เดฎเดพเตปเดกเต เดฒเตˆเตป เดŸเต‚เดณเตเด•เดณเดฟเตฝ (CLI) เดŽเตปเตเดฑเต† เด•เตˆเด•เตพ เดฒเดญเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เดจเดฟเตผเดฆเตเดฆเต‡เดถเด‚ เดกเต‹เด•เตเด•เตผ เด‡เตปเดธเตเดฑเตเดฑเดพเดณเต‡เดทเตป เด—เตˆเดกเดฟเดจเต† เดตเดณเดฐเต† เดตเตเดฏเด•เตเดคเดตเตเด‚ เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เดพเดตเตเดจเตเดจเดคเตเด‚ เดŽเดจเตเดจเต เดตเดฟเดณเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ, เดŽเดจเตเดจเดพเตฝ เด…เดคเดฟเตฝ เดจเดฟเดจเตเดจเต เด†เดฆเตเดฏเดคเตเดคเต† เด‡เตปเดธเตเดฑเตเดฑเดพเดณเต‡เดทเตป เด˜เดŸเตเดŸเด‚ เดŽเดŸเตเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดจเดฟเด™เตเด™เตพ เดกเต‹เด•เตเด•เตผ เดกเต†เดธเตเด•เตเดŸเต‹เดชเตเดชเต (เดฎเดพเด•เต เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดตเดฟเตปเดกเต‹เดธเดฟเดจเดพเดฏเดฟ) เดกเตŒเตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต.

เดกเต‹เด•เตเด•เตผ เดนเดฌเตเดฌเต เดเด•เดฆเต‡เดถเด‚ เดธเดฎเดพเดจเดฎเดพเดฃเต เดธเดพเดฎเต‚เดนเดฟเด•เด‚ git เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเด•เตพ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฐเดœเดฟเดธเตเดŸเตเดฐเดฟเด•เตเด•เต npm JavaScript เดชเดพเด•เตเด•เต‡เดœเตเด•เตพเด•เตเด•เดพเดฏเดฟ. เดกเต‹เด•เตเด•เตผ เด‡เดฎเต‡เดœเตเด•เตพเด•เตเด•เดพเดฏเตเดณเตเดณ เด’เดฐเต เด“เตบเดฒเตˆเตป เดถเต‡เด–เดฐเดฎเดพเดฃเดฟเดคเต. เด‡เดคเดพเดฃเต เดกเต‹เด•เตเด•เตผ เดกเต†เดธเตเด•เตเดŸเต‹เดชเตเดชเต เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเต.

เด…เดคเดฟเดจเดพเตฝ, เดกเต‹เด•เตเด•เตผ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดจเดฟเด™เตเด™เตพ เดฐเดฃเตเดŸเต เด•เดพเดฐเตเดฏเด™เตเด™เตพ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต:

เด‡เดคเดฟเดจเตเดถเต‡เดทเด‚, เดกเต‹เด•เตเด•เตผ เดชเดคเดฟเดชเตเดชเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เด•เดฎเดพเตปเดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดšเตเดšเต เดกเต‹เด•เตเด•เตผ เดธเดฟเดŽเตฝเด เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเตเดฃเตเดŸเต‹เดฏเต†เดจเตเดจเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดพเด‚:

docker -v

เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ, เดšเต‹เดฆเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดจเดฟเด™เตเด™เดณเตเดŸเต† เด‰เดชเดฏเต‹เด•เตเดคเตƒเดจเดพเดฎเดตเตเด‚ เดชเดพเดธเตโ€Œเดตเต‡เดกเตเด‚ เดจเตฝเด•เดฟ เดกเต‹เด•เตเด•เตผ เดนเดฌเดฟเดฒเต‡เด•เตเด•เต เดฒเต‹เด—เดฟเตป เดšเต†เดฏเตเดฏเตเด•:

docker login

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

โ–เดšเดฟเดคเตเดฐเด™เตเด™เตพ

เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเตผ เด•เต‚เดŸเตเดŸเดฟเดšเตเดšเต‡เตผเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เตพ เด‰เตพเด•เตเด•เตŠเดณเตเดณเตเดจเตเดจ เด’เดฐเต เดฌเตเดฒเต‚เดชเตเดฐเดฟเตปเตเดฑเต เดชเต‹เดฒเต†เดฏเดพเดฃเต เดšเดฟเดคเตเดฐเด‚. เด‡เดคเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตปเตเดฑเต† เดซเดฏเตฝ เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเตปเตเดฑเต†เดฏเตเด‚ เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เดณเตเดŸเต†เดฏเตเด‚ เดฎเดพเดฑเตเดฑเดฎเดฟเดฒเตเดฒเดพเดคเตเดค เดธเตเดจเดพเดชเตเดชเตเดทเต‹เดŸเตเดŸเดพเดฃเต. เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเตผเด•เตเด•เต เดŽเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เดšเดฟเดคเตเดฐเด™เตเด™เตพ เดชเด™เตเด•เดฟเดŸเดพเดจเดพเด•เตเด‚.

# ะ’ั‹ะฒะพะด ัะฒะตะดะตะฝะธะน ะพะฑะพ ะฒัะตั… ะพะฑั€ะฐะทะฐั…
docker images

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

REPOSITORY     TAG     IMAGE ID     CREATED     SIZE
---

เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ, เด…เดคเต‡ เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเดฒเตเดณเตเดณ เด•เดฎเดพเตปเดกเตเด•เดณเตเดŸเต† เดšเดฟเดฒ เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เตพ เดจเดฎเตเด•เตเด•เต เดจเต‹เด•เตเด•เดพเด‚ - เด†เดฆเตเดฏเด‚ เด’เดฐเต เด•เดฎเตปเตเดฑเดฟเดจเตŠเดชเตเดชเด‚ เด’เดฐเต เด•เดฎเดพเตปเดกเต เด‰เดฃเตเดŸเต, เดคเตเดŸเตผเดจเตเดจเต เด…เดคเต เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเต เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเดจเตเดจเดคเดฟเตปเตเดฑเต† เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃเด‚.

โ–เดชเดพเดคเตเดฐเด™เตเด™เตพ

เด’เดฐเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด†เดตเดถเตเดฏเดฎเดพเดฏ เดŽเดฒเตเดฒเดพเด‚ เด‰เตพเด•เตเด•เตŠเดณเตเดณเตเดจเตเดจ เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเดฌเดฟเตพ เดชเดพเด•เตเด•เต‡เดœเดพเดฃเต เด•เดฃเตเดŸเต†เดฏเตเดจเตผ. เด‡เตปเดซเตเดฐเดพเดธเตเดŸเตเดฐเด•เตเดšเตผ เดชเดฐเดฟเด—เดฃเดฟเด•เตเด•เดพเดคเต† เดคเดจเตเดจเต† เดˆ เดธเดฎเต€เดชเดจเดฎเตเดณเตเดณ เด’เดฐเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดŽเดฒเตเดฒเดพเดฏเตเดชเตเดชเต‹เดดเตเด‚ เด’เดฐเต‡เดชเต‹เดฒเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด‚: เด’เดฑเตเดฑเดชเตเดชเต†เดŸเตเดŸ เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดฏเดฟเดฒเตเด‚ เด…เดคเต‡ เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดฏเดฟเดฒเตเด‚. เด’เดฐเต‡ เด‡เดฎเต‡เดœเดฟเตปเตเดฑเต† เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เตพ เดตเตเดฏเดคเตเดฏเดธเตเดค เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเด•เดณเดฟเตฝ เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต เดŽเดจเตเดจเดคเดพเดฃเต เด•เดพเดฐเตเดฏเด‚.

# ะŸะตั€ะตั‡ะธัะปะตะฝะธะต ะฒัะตั… ะบะพะฝั‚ะตะนะฝะตั€ะพะฒ
docker ps -a
CONTAINER ID     IMAGE     COMMAND     CREATED     STATUS     PORTS     NAMES
---

โ–เดŸเดพเด—เตเด•เตพ

เด’เดฐเต เดŸเดพเด—เต เดŽเดจเตเดจเดคเต เด’เดฐเต เดšเดฟเดคเตเดฐเดคเตเดคเดฟเตปเตเดฑเต† เดชเตเดฐเดคเตเดฏเต‡เด• เดชเดคเดฟเดชเตเดชเดฟเตปเตเดฑเต† เดธเต‚เดšเดจเดฏเดพเดฃเต.

โ–เดกเต‹เด•เตเด•เตผ เด•เดฎเดพเตปเดกเตเด•เดณเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด’เดฐเต เดฆเตเดฐเตเดค เดฑเดซเดฑเตปเดธเต

เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เดšเดฟเดฒ เดกเต‹เด•เตเด•เตผ เด•เดฎเดพเตปเดกเตเด•เดณเตเดŸเต† เด’เดฐเต เด…เดตเดฒเต‹เด•เดจเด‚ เด‡เดคเดพ.

เดŸเต€เด‚

เดธเดจเตเดฆเตผเดญเด‚

เดซเดฒเด‚

เดกเต‹เด•เตเด•เตผ เดฌเดฟเตฝเดกเต

เด‡เดฎเต‡เดœเต

เด’เดฐเต เดกเต‹เด•เตเด•เตผเดซเดฏเดฒเดฟเตฝ เดจเดฟเดจเตเดจเต เด’เดฐเต เดšเดฟเดคเตเดฐเด‚ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจเต

เดกเต‹เด•เตเด•เตผ เดŸเดพเด—เต

เด‡เดฎเต‡เดœเต

เดšเดฟเดคเตเดฐเด‚ เดŸเดพเด—เดฟเด‚เด—เต

docker เดšเดฟเดคเตเดฐเด™เตเด™เตพ

เด‡เดฎเต‡เดœเต

เดšเดฟเดคเตเดฐเด™เตเด™เตพ เดฒเดฟเดธเตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเตเดจเตเดจเต

เดกเต‹เด•เตเด•เตผ เดฑเตบ

เด•เดฃเตเดŸเต†เดฏเตเดจเตผ

เด’เดฐเต เด‡เดฎเต‡เดœเดฟเดจเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟ เด’เดฐเต เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต

เดกเต‹เด•เตเด•เตผ เดชเตเดทเต

เด‡เดฎเต‡เดœเต

เดฐเดœเดฟเดธเตเดŸเตเดฐเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต เดšเดฟเดคเตเดฐเด‚ เด…เดชเตโ€Œเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต

เดกเต‹เด•เตเด•เตผ เดชเตเตพ

เด‡เดฎเต‡เดœเต

เดฐเดœเดฟเดธเตเดŸเตเดฐเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เด’เดฐเต เดšเดฟเดคเตเดฐเด‚ เดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต

เดกเต‹เด•เตเด•เตผ ps

เด•เดฃเตเดŸเต†เดฏเตเดจเตผ

เดฒเดฟเดธเตเดฑเตเดฑเดฟเด‚เด—เต เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเตเด•เตพ

เดกเต‹เด•เตเด•เตผ เดธเดฟเดธเตเดฑเตเดฑเด‚ เดชเตเดฐเต‚เตบ

เดšเดฟเดคเตเดฐเด‚/เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเตผ

เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดคเตเดค เดชเดพเดคเตเดฐเด™เตเด™เดณเตเด‚ เดšเดฟเดคเตเดฐเด™เตเด™เดณเตเด‚ เดจเต€เด•เตเด•เด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต

โ–เดกเต‹เด•เตเด•เตผเดซเดฟเตฝ

เดชเตเดฐเดพเดฆเต‡เดถเดฟเด•เดฎเดพเดฏเดฟ เด’เดฐเต เดชเตเดฐเตŠเดกเด•เตเดทเตป เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดŽเด™เตเด™เดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดฃเดฎเต†เดจเตเดจเต เดŽเดจเดฟเด•เตเด•เดฑเดฟเดฏเดพเด‚. เด’เดฐเต เดฑเต†เดกเดฟเดฎเต†เดฏเตเดกเต เดฑเดฟเดฏเดพเด•เตเดฑเตเดฑเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เดพเตป เดฐเต‚เดชเด•เตฝเดชเตเดชเดจ เดšเต†เดฏเตเดค เด’เดฐเต เดตเต†เดฌเตโ€Œเดชเดพเด•เตเด•เต เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดŽเดจเดฟเด•เตเด•เตเดฃเตเดŸเต. เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ, เดชเต‹เตผเดŸเตเดŸเดฟเตฝ เด’เดฐเต Node.js เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟเดฏเตเดณเตเดณ เดธเต†เตผเดตเตผ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เด•เดฎเดพเตปเดกเต เดŽเดจเดฟเด•เตเด•เตเดฃเตเดŸเต 5000. เด‡เดคเต เด‡เดคเตเดชเต‹เดฒเต† เด•เดพเดฃเดชเตเดชเต†เดŸเตเดจเตเดจเต:

npm i         # ัƒัั‚ะฐะฝะพะฒะบะฐ ะทะฐะฒะธัะธะผะพัั‚ะตะน
npm run build # ัะฑะพั€ะบะฐ React-ะฟั€ะธะปะพะถะตะฝะธั
npm run start # ะทะฐะฟัƒัะบ Node-ัะตั€ะฒะตั€ะฐ

เดˆ เดฎเต†เดฑเตเดฑเต€เดฐเดฟเดฏเดฒเดฟเดจเดพเดฏเดฟ เดŽเดจเดฟเด•เตเด•เต เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด‡เดฒเตเดฒ เดŽเดจเตเดจเดคเต เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเดพเดฃเต. เดŽเดจเตเดจเดพเตฝ เด‡เดตเดฟเดŸเต†, เดชเดฐเต€เด•เตเดทเดฃเด™เตเด™เตพเด•เตเด•เดพเดฏเดฟ, เดเดคเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดจเต‹เดกเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด‚ เดšเต†เดฏเตเดฏเตเด‚.

เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดจเดฟเด™เตเด™เตพ เดกเต‹เด•เตเด•เดฑเดฟเดจเต เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เตพ เดจเตฝเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เดŽเดจเตเดจ เดซเดฏเดฒเดฟเดฒเต‚เดŸเต†เดฏเดพเดฃเต เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต Dockerfile, เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเตปเตเดฑเต† เดฑเต‚เดŸเตเดŸเต เดกเดฏเดฑเด•เตเดŸเดฑเดฟเดฏเดฟเตฝ เดธเตเดฅเดฟเดคเดฟเดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดˆ เดซเดฏเตฝ, เด†เดฆเตเดฏเด‚, เดคเดฟเด•เดšเตเดšเตเด‚ เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดพเดคเตเดคเดคเดพเดฏเดฟ เดคเต‹เดจเตเดจเตเดจเตเดจเต.

เดŽเดจเตเดจเดพเตฝ เด…เดคเดฟเตฝ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต เด’เดฐเต เดชเตเดฐเดตเตผเดคเตเดคเดจ เด…เดจเตเดคเดฐเต€เด•เตเดทเด‚ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดธเดฎเดพเดจเดฎเดพเดฏ เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดชเตเดฐเดคเตเดฏเต‡เด• เด•เดฎเดพเตปเดกเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดตเดฟเดตเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดˆ เด•เดฎเดพเตปเดกเตเด•เดณเดฟเตฝ เดšเดฟเดฒเดคเต เด‡เดคเดพ:

  • FROM โ€” เดˆ เด•เดฎเดพเตปเดกเต เด’เดฐเต เดซเดฏเตฝ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต. เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เดจเดฟเตผเดฎเตเดฎเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด…เดŸเดฟเดธเตเดฅเดพเดจ เดšเดฟเดคเตเดฐเด‚ เด‡เดคเต เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เตเดจเตเดจเต.
  • เดชเด•เตผเดคเตเดคเตเด• - เด’เดฐเต เดชเตเดฐเดพเดฆเต‡เดถเดฟเด• เด‰เดฑเดตเดฟเดŸเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เด’เดฐเต เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเดฟเดฒเต‡เด•เตเด•เต เดซเดฏเดฒเตเด•เตพ เดชเด•เตผเดคเตเดคเตเดจเตเดจเต.
  • เดตเตผเด•เตเด•เตเดกเดฟเด†เตผ - เดคเดพเดดเต† เดชเดฑเดฏเตเดจเตเดจ เด•เดฎเดพเตปเดกเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดตเตผเด•เตเด•เดฟเด‚เด—เต เดกเดฏเดฑเด•เตเดŸเดฑเดฟ เดธเดœเตเดœเดฎเดพเด•เตเด•เตเดจเตเดจเต.
  • RUN - เด•เดฎเดพเตปเดกเตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•.
  • เดตเต†เดณเดฟเดชเตเดชเต†เดŸเตเดคเตเดคเตเด• - เดชเต‹เตผเดŸเตเดŸเต เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ.
  • เดŽเตปเดŸเตเดฐเดฟเดชเต‹เดฏเดฟเดจเตเดฑเต - เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸ เด•เดฎเดพเตปเดกเดฟเตปเตเดฑเต† เดธเต‚เดšเดจ.

Dockerfile เด‡เดคเตเดชเต‹เดฒเตŠเดจเตเดจเต เด•เดพเดฃเดชเตเดชเต†เดŸเดพเด‚:

# ะ—ะฐะณั€ัƒะทะธั‚ัŒ ะฑะฐะทะพะฒั‹ะน ะพะฑั€ะฐะท
FROM node:12-alpine

# ะกะบะพะฟะธั€ะพะฒะฐั‚ัŒ ั„ะฐะนะปั‹ ะธะท ั‚ะตะบัƒั‰ะตะน ะดะธั€ะตะบั‚ะพั€ะธะธ ะฒ ะดะธั€ะตะบั‚ะพั€ะธัŽ app/
COPY . app/

# ะ˜ัะฟะพะปัŒะทะพะฒะฐั‚ัŒ app/ ะฒ ั€ะพะปะธ ั€ะฐะฑะพั‡ะตะน ะดะธั€ะตะบั‚ะพั€ะธะธ
WORKDIR app/

# ะฃัั‚ะฐะฝะพะฒะธั‚ัŒ ะทะฐะฒะธัะธะผะพัั‚ะธ (ะบะพะผะฐะฝะดะฐ npm ci ะฟะพั…ะพะถะฐ npm i, ะฝะพ ะธัะฟะพะปัŒะทัƒะตั‚ัั ะดะปั ะฐะฒั‚ะพะผะฐั‚ะธะทะธั€ะพะฒะฐะฝะฝั‹ั… ัะฑะพั€ะพะบ)
RUN npm ci --only-production

# ะกะพะฑั€ะฐั‚ัŒ ะบะปะธะตะฝั‚ัะบะพะต React-ะฟั€ะธะปะพะถะตะฝะธะต ะดะปั ะฟั€ะพะดะฐะบัˆะฝะฐ
RUN npm run build

# ะŸั€ะพัะปัƒัˆะธะฒะฐั‚ัŒ ัƒะบะฐะทะฐะฝะฝั‹ะน ะฟะพั€ั‚
EXPOSE 5000

# ะ—ะฐะฟัƒัั‚ะธั‚ัŒ Node-ัะตั€ะฒะตั€
ENTRYPOINT npm run start

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

โ–เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเตผ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเด•, เดŸเดพเด—เตเดšเต†เดฏเตเดฏเตเด•, เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•

เดฒเต‹เด•เตเด•เตฝ เด…เดธเด‚เดฌเตเดฒเดฟเดฏเตเด‚ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเดฟเตปเตเดฑเต† เดตเดฟเด•เตเดทเต‡เดชเดฃเดตเตเด‚ เดžเด™เตเด™เตพเด•เตเด•เต เดฒเดญเดฟเดšเตเดšเดคเดฟเดจเต เดถเต‡เดทเดฎเดพเดฃเต Dockerfile, เดœเต‹เดฒเดฟเด•เตพ เดตเดณเดฐเต† เดฒเดณเดฟเดคเดฎเดพเดฃเต. เดจเดฟเด™เตเด™เตพ เดšเดฟเดคเตเดฐเด‚ เดกเต‹เด•เตเด•เตผ เดนเดฌเตเดฌเดฟเดฒเต‡เด•เตเด•เต เดคเดณเตเดณเตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต, เดจเดฟเด™เตเด™เตพ เด…เดคเต เดชเตเดฐเดพเดฆเต‡เดถเดฟเด•เดฎเดพเดฏเดฟ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต.

โ–เด…เดธเด‚เดฌเตเดฒเดฟ

เด†เดฆเตเดฏเด‚ เดจเดฟเด™เตเด™เตพ เดถเต‡เด–เดฐเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต เด’เดฐเต เดšเดฟเดคเตเดฐเด‚, เด’เดฐเต เดชเต‡เดฐเตเด‚, เด“เดชเตเดทเดฃเดฒเดพเดฏเดฟ, เด’เดฐเต เดŸเดพเด—เตเด‚ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เตเดจเตเดจเต (เด’เดฐเต เดŸเดพเด—เต เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดฟเดฏเดฟเดŸเตเดŸเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เดธเดฟเดธเตเดฑเตเดฑเด‚ เดธเตเดตเดฏเดฎเต‡เดต เดšเดฟเดคเตเดฐเดคเตเดคเดฟเดจเต เด’เดฐเต เดŸเดพเด—เต เดจเตฝเด•เตเด‚ latest).

# ะกะฑะพั€ะบะฐ ะพะฑั€ะฐะทะฐ
docker build -t <image>:<tag> .

เดˆ เด•เดฎเดพเตปเดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดšเตเดšเดคเดฟเดจเต เดถเต‡เดทเด‚, เดกเต‹เด•เตเด•เตผ เดšเดฟเดคเตเดฐเด‚ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจเดคเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดพเดฃเดพเตป เด•เดดเดฟเดฏเตเด‚.

Sending build context to Docker daemon   2.88MB
Step 1/9 : FROM node:12-alpine
 ---> ...ะฒั‹ะฟะพะปะฝะตะฝะธะต ัั‚ะฐะฟะพะฒ ัะฑะพั€ะบะธ...
Successfully built 123456789123
Successfully tagged <image>:<tag>

เดจเดฟเตผเดฎเตเดฎเดพเดฃเดคเตเดคเดฟเดจเต เด•เตเดฑเดšเตเดšเต เดฎเดฟเดจเดฟเดฑเตเดฑเตเด•เตพ เดŽเดŸเตเดคเตเดคเต‡เด•เตเด•เดพเด‚ - เด‡เดคเต†เดฒเตเดฒเดพเด‚ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดŽเดคเตเดฐ เดกเดฟเดชเตปเดกเตปเดธเดฟเด•เตพ เด‰เดฃเตเดŸเต เดŽเดจเตเดจเดคเดฟเดจเต† เด†เดถเตเดฐเดฏเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดฌเดฟเตฝเดกเต เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเดฏเดฟเด•เตเด•เดดเดฟเดžเตเดžเดพเตฝ, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดฎเดพเตปเดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚ docker images เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดคเดฟเดฏ เดšเดฟเดคเตเดฐเดคเตเดคเดฟเตปเตเดฑเต† เดตเดฟเดตเดฐเดฃเด‚ เดจเต‹เด•เตเด•เตเด•.

REPOSITORY          TAG               IMAGE ID            CREATED              SIZE
<image>             latest            123456789123        About a minute ago   x.xxGB

โ– เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเด•

เดšเดฟเดคเตเดฐเด‚ เดธเตƒเดทเตเดŸเดฟเดšเตเดšเต. เด‡เดคเดฟเตปเตเดฑเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดคเตเดคเดฟเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเดฎเต†เดจเตเดจเดพเดฃเต เด‡เดคเดฟเดจเตผเดคเตเดฅเด‚. เด•เดพเดฐเดฃเด‚ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด†เด•เตโ€Œเดธเดธเต เดšเต†เดฏเตเดฏเดพเตป เดžเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต localhost:5000, เดžเดพเตป, เดœเต‹เดกเดฟเดฏเตเดŸเต† เด‡เดŸเดคเตเดตเดถเดคเตเดคเต 5000:5000 เด…เดŸเตเดคเตเดค เด•เดฎเดพเตปเดกเดฟเตฝ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดคเต 5000. เดตเดฒเดคเตเดตเดถเดคเตเดคเต เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เดชเต‹เตผเดŸเตเดŸเต เด†เดฃเต.

# ะ—ะฐะฟัƒัะบ ั ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะตะผ ะปะพะบะฐะปัŒะฝะพะณะพ ะฟะพั€ั‚ะฐ 5000 ะธ ะฟะพั€ั‚ะฐ ะบะพะฝั‚ะตะนะฝะตั€ะฐ 5000
docker run -p 5000:5000 <image>:<tag>

เด‡เดชเตเดชเต‹เตพ เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เดธเตƒเดทเตเดŸเดฟเดšเตเดšเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚ docker ps เดˆ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดตเดฟเดตเดฐเด™เตเด™เตพ เดจเต‹เด•เตเด•เตเดจเตเดจเดคเดฟเดจเต (เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚ docker ps -a, เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดต เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เดŽเดฒเตเดฒเดพ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เดณเต†เดฏเตเด‚ เด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดตเดฟเดตเดฐเด™เตเด™เตพ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต).

CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS                      PORTS                    NAMES
987654321234        <image>             "/bin/sh -c 'npm runโ€ฆ"   6 seconds ago        Up 6 seconds                0.0.0.0:5000->5000/tcp   stoic_darwin

เดจเดฟเด™เตเด™เตพ เด‡เดชเตเดชเต‹เตพ เดตเดฟเดฒเดพเดธเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เดฏเดพเตฝ localhost:5000 - เด’เดฐเต เดชเตเดฐเตŠเดกเด•เตเดทเตป เดŽเตปเดตเดฏเต‹เตบเดฎเต†เตปเตเดฑเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตปเตเดฑเต† เดชเต‡เดœเดฟเดจเต เดธเดฎเดพเดจเดฎเดพเดฏเดฟ เด•เดพเดฃเดชเตเดชเต†เดŸเตเดจเตเดจ เด’เดฐเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตปเตเดฑเต† เด’เดฐเต เดชเต‡เดœเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดพเดฃเดพเตป เด•เดดเดฟเดฏเตเด‚.

โ–เดŸเดพเด—เดฟเด‚เด—เตเด‚ เดชเตเดฐเดธเดฟเดฆเตเดงเต€เด•เดฐเดฟเด•เตเด•เดฒเตเด‚

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

เด‡เดชเตเดชเต‹เตพ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดชเตเดคเดฟเดฏ เดชเต‡เดฐเดฟเตฝ เดšเดฟเดคเตเดฐเด‚ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เดพเดจเตเด‚ เด•เดฎเดพเตปเดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเดจเตเด‚ เด•เดดเดฟเดฏเตเด‚ docker push เด‡เดคเต เดกเต‹เด•เตเด•เตผ เดนเดฌเต เดถเต‡เด–เดฐเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดคเดณเตเดณเดพเตป.

docker build -t <username>/<repository>:<tag> .
docker tag <username>/<repository>:<tag> <username>/<repository>:latest
docker push <username>/<repository>:<tag>

# ะะฐ ะฟั€ะฐะบั‚ะธะบะต ัั‚ะพ ะผะพะถะตั‚ ะฒั‹ะณะปัะดะตั‚ัŒ, ะฝะฐะฟั€ะธะผะตั€, ั‚ะฐะบ:
docker build -t user/app:v1.0.0 .
docker tag user/app:v1.0.0 user/app:latest
docker push user/app:v1.0.0

เดŽเดฒเตเดฒเดพเด‚ เดถเดฐเดฟเดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดšเดฟเดคเตเดฐเด‚ เดกเต‹เด•เตเด•เตผ เดนเดฌเดฟเตฝ เดฒเดญเตเดฏเดฎเดพเด•เตเด‚ เด•เต‚เดŸเดพเดคเต† เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต เดŽเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เด…เดชเตโ€Œเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเดพเดจเต‹ เดฎเดฑเตเดฑเต เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเตผเด•เตเด•เต เด•เตˆเดฎเดพเดฑเดพเดจเต‹ เด•เดดเดฟเดฏเตเด‚.

เด…เดŸเตเดคเตเดค เด˜เดŸเตเดŸเด™เตเด™เตพ

เด’เดฐเต เดกเต‹เด•เตเด•เตผ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเดฟเตปเตเดฑเต† เดฐเต‚เดชเดคเตเดคเดฟเดฒเตเดณเตเดณ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดชเตเดฐเดพเดฆเต‡เดถเดฟเด•เดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเตเดฃเตเดŸเต†เดจเตเดจเต เดžเด™เตเด™เตพ เด‡เดชเตเดชเต‹เตพ เดชเดฐเดฟเดถเต‹เดงเดฟเดšเตเดšเตเดฑเดชเตเดชเดฟเดšเตเดšเต. เดžเด™เตเด™เตพ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเตผ เดกเต‹เด•เตเด•เตผ เดนเดฌเตเดฌเดฟเดฒเต‡เด•เตเด•เต เด…เดชเตโ€Œเดฒเต‹เดกเต เดšเต†เดฏเตเดคเดฟเดŸเตเดŸเตเดฃเตเดŸเต. เด‡เดคเต†เดฒเตเดฒเดพเด‚ เด…เตผเดคเตเดฅเดฎเดพเด•เตเด•เตเดจเตเดจเดคเต เดžเด™เตเด™เดณเตเดŸเต† เดฒเด•เตเดทเตเดฏเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดžเด™เตเด™เตพ เด‡เดคเดฟเดจเด•เด‚ เดคเดจเตเดจเต† เดฎเดฟเด•เดšเตเดš เดชเตเดฐเต‹เด—เดคเดฟ เด•เตˆเดตเดฐเดฟเดšเตเดšเต เดŽเดจเตเดจเดพเดฃเต. เด‡เดชเตเดชเต‹เตพ เดจเดฎเตเด•เตเด•เต เดฐเดฃเตเดŸเต เดšเต‹เดฆเตเดฏเด™เตเด™เตพ เด•เต‚เดŸเดฟ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต:

  • เด•เต‹เดกเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดฎเดพเดฏเดฟ เด’เดฐเต CI เดŸเต‚เตพ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต.
  • เดชเตเดฐเตŠเดกเด•เตเดทเตป เดธเต†เตผเดตเตผ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต† เด…เดคเดฟเดจเต เดžเด™เตเด™เดณเตเดŸเต† เด•เต‹เดกเต เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเดจเตเด‚ เด•เดดเดฟเดฏเตเด‚.

เดžเด™เตเด™เดณเตเดŸเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดžเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต เดŸเตเดฐเดพเดตเดฟเดธเต เดธเดฟเด. เด’เดฐเต เดธเต†เตผเดตเตผ เดŽเดจเตเดจ เดจเดฟเดฒเดฏเดฟเตฝ - เดกเดฟเดฑเตเดฑเดฟเด—เตฝ เดธเดฎเตเดฆเตเดฐเด‚.

เด‡เดตเดฟเดŸเต† เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดธเต‡เดตเดจเด™เตเด™เดณเตเดŸเต† เดฎเดฑเตเดฑเตŠเดฐเต เดธเด‚เดฏเต‹เดœเดจเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเดคเต เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเดพเดฃเต. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดŸเตเดฐเดพเดตเดฟเดธเต เดธเดฟเดเด•เตเด•เต เดชเด•เดฐเด‚, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดธเตผเด•เตเด•เดฟเตพเดธเดฟเด เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด—เดฟเดคเตเดคเดฌเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚. เดกเดฟเดœเดฟเดฑเตเดฑเตฝ เด“เดทเตเดฏเดจเต เดชเด•เดฐเด‚ - AWS เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ Linode.

เดŸเตเดฐเดพเดตเดฟเดธเต เดธเดฟเดเดฏเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เดžเด™เตเด™เตพ เดคเต€เดฐเตเดฎเดพเดจเดฟเดšเตเดšเต, เดˆ เดธเต‡เดตเดจเดคเตเดคเดฟเตฝ เดŽเดจเดฟเด•เตเด•เต เด‡เดคเดฟเดจเด•เด‚ เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เด•เตเดฐเดฎเต€เด•เดฐเดฟเดšเตเดšเดฟเดŸเตเดŸเตเดฃเตเดŸเต. เด…เดคเดฟเดจเดพเตฝ, เดœเต‹เดฒเดฟเด•เตเด•เดพเดฏเดฟ เด‡เดคเต เดŽเด™เตเด™เดจเต† เดคเดฏเตเดฏเดพเดฑเดพเด•เตเด•เดพเด‚ เดŽเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เด‡เดชเตเดชเต‹เตพ เดžเดพเตป เดšเตเดฐเตเด•เตเด•เดฎเดพเดฏเดฟ เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เตเด‚.

เดŸเตเดฐเดพเดตเดฟเดธเต เดธเดฟเด

เด•เต‹เดกเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดฎเตเดณเตเดณ เด’เดฐเต เด‰เดชเด•เดฐเดฃเดฎเดพเดฃเต เดŸเตเดฐเดพเดตเดฟเดธเต เดธเดฟเด. เดŸเตเดฐเดพเดตเดฟเดธเต เดธเดฟเด เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเตปเตเดฑเต† เดธเด™เตเด•เต€เตผเดฃเดคเด•เดณเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เดพเตป เดžเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ, เด•เดพเดฐเดฃเด‚ เด“เดฐเต‹ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเตเด‚ เด…เดฆเตเดตเดฟเดคเต€เดฏเดฎเดพเดฃเต, เด‡เดคเต เดตเดฒเดฟเดฏ เดจเต‡เดŸเตเดŸเดฎเตเดฃเตเดŸเดพเด•เตเด•เดฟเดฒเตเดฒ. เดŽเดจเตเดจเดพเตฝ เดจเดฟเด™เตเด™เตพ เดŸเตเดฐเดพเดตเดฟเดธเต เดธเดฟเด เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เดคเต€เดฐเตเดฎเดพเดจเดฟเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดจเดฟเด™เตเด™เดณเต† เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด…เดŸเดฟเดธเตเดฅเดพเดจเด•เดพเดฐเตเดฏเด™เตเด™เตพ เดžเดพเตป เด•เดตเตผ เดšเต†เดฏเตเดฏเตเด‚. เดจเดฟเด™เตเด™เตพ Travis CI, CircleCI, Jenkins เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฎเดฑเตเดฑเต†เดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดคเตเดคเดพเดฒเตเด‚, เดธเดฎเดพเดจเดฎเดพเดฏ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดฐเต€เดคเดฟเด•เตพ เดŽเดฒเตเดฒเดพเดฏเดฟเดŸเดคเตเดคเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด‚.

เดŸเตเดฐเดพเดตเดฟเดธเต เดธเดฟเดเดฏเตเดฎเดพเดฏเดฟ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เด‡เดคเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเด• เดธเต†เดฏเตเดฑเตเดฑเต เดชเตเดฐเต‹เด•เตเดฑเตเดฑ เด•เต‚เดŸเดพเดคเต† เด’เดฐเต เด…เด•เตเด•เต—เดฃเตเดŸเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•. เดคเตเดŸเตผเดจเตเดจเต เดจเดฟเด™เตเด™เดณเตเดŸเต† GitHub เด…เด•เตเด•เต—เดฃเตเดŸเตเดฎเดพเดฏเดฟ เดŸเตเดฐเดพเดตเดฟเดธเต CI เดธเด‚เดฏเต‹เดœเดฟเดชเตเดชเดฟเด•เตเด•เตเด•. เดธเดฟเดธเตเดฑเตเดฑเด‚ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดœเต‹เดฒเดฟ เด“เดŸเตเดŸเต‹เดฎเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เด…เดคเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด†เด•เตเดธเดธเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดฎเดพเด•เตเด•เดพเดจเตเด‚ เดจเดฟเด™เตเด™เตพ เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจ เดถเต‡เด–เดฐเด‚ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. (เดžเดพเตป GitHub เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต, เดชเด•เตเดทเต‡ BitBucket, GitLab เดŽเดจเตเดจเดฟเดตเดฏเตเดฎเดพเดฏเดฟ เดธเดฎเดจเตเดตเดฏเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เดŸเตเดฐเดพเดตเดฟเดธเต CI-เดจเต เด•เดดเดฟเดฏเตเดฎเต†เดจเตเดจเต เดŽเดจเดฟเด•เตเด•เต เด‰เดฑเดชเตเดชเตเดฃเตเดŸเต).

เด“เดฐเต‹ เดคเดตเดฃเดฏเตเด‚ เดŸเตเดฐเดพเดตเดฟเดธเต เดธเดฟเด เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เด…เดจเตเดฌเดจเตเดง เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟ เดฌเตเดฐเดพเดžเตเดšเตเด•เตพ เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เตเดจเตเดจเดคเต เด‰เตพเดชเตเดชเต†เดŸเต†, เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดซเดฏเดฒเดฟเตฝ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดฟเดฏ เด•เดฎเดพเตปเดกเตเด•เตพ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดธเต†เตผเดตเตผ เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต.

โ–เดœเต‹เดฒเดฟ เดœเต€เดตเดฟเดค เดšเด•เตเดฐเด‚

เดŸเตเดฐเดพเดตเดฟเดธเต เดธเดฟเด เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดซเดฏเตฝ เดตเดฟเดณเดฟเดšเตเดšเต .travis.yml เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดฑเต‚เดŸเตเดŸเต เดกเดฏเดฑเด•เตเดŸเดฑเดฟเดฏเดฟเตฝ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด‡เดตเตปเตเดฑเตเด•เดณเตเดŸเต† เด†เดถเดฏเดคเตเดคเต† เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต เดœเต€เดตเดฟเดค เดšเด•เตเดฐเด‚ เดšเตเดฎเดคเดฒเด•เตพ. เดˆ เด‡เดตเตปเตเดฑเตเด•เตพ เด…เดต เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจ เด•เตเดฐเดฎเดคเตเดคเดฟเตฝ เดชเดŸเตเดŸเดฟเด•เดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต:

  • apt addons
  • cache components
  • before_install
  • install
  • before_script
  • script
  • before_cache
  • after_success ะธะปะธ after_failure
  • before_deploy
  • deploy
  • after_deploy
  • after_script

โ–เดŸเต†เดธเตเดฑเตเดฑเดฟเด‚เด—เต

เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดซเดฏเดฒเดฟเตฝ เดžเดพเตป เดฒเต‹เด•เตเด•เตฝ เดŸเตเดฐเดพเดตเดฟเดธเต เดธเดฟเด เดธเต†เตผเดตเตผ เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเดพเตป เดชเต‹เด•เตเดจเตเดจเต. เดžเดพเตป เดจเต‹เดกเต 12 เดญเดพเดทเดฏเดพเดฏเดฟ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดคเตเดคเต เดกเต‹เด•เตเด•เตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด†เดตเดถเตเดฏเดฎเดพเดฏ เดกเดฟเดชเตปเดกเตปเดธเดฟเด•เตพ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดพเตป เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเต‹เดŸเต เดชเดฑเดžเตเดžเต.

เดฒเดฟเดธเตเดฑเตเดฑเตเดšเต†เดฏเตเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดŽเดฒเตเดฒเดพเด‚ .travis.yml, เดฎเดฑเตเดฑเตเดตเดฟเดงเดคเตเดคเดฟเตฝ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดฟเดฏเดฟเดŸเตเดŸเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเตเดŸเต† เดŽเดฒเตเดฒเดพ เดถเดพเด–เด•เดณเดฟเดฒเต‡เด•เตเด•เตเด‚ เดŽเดฒเตเดฒเดพ เดชเตเตพ เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เดณเตเด‚ เดจเดŸเดคเตเดคเตเดฎเตเดชเต‹เตพ เด…เดคเต เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเด‚. เด‡เดคเตŠเดฐเต เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดพเดฏ เดธเดตเดฟเดถเต‡เดทเดคเดฏเดพเดฃเต, เด•เดพเดฐเดฃเด‚ เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเตฝ เดตเดฐเตเดจเตเดจ เดŽเดฒเตเดฒเดพ เด•เต‹เดกเตเด•เดณเตเด‚ เดจเดฎเตเด•เตเด•เต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดพเด‚ เดŽเดจเตเดจเดพเดฃเต เด‡เดคเดฟเดจเตผเดคเตเดฅเด‚. เดฌเตเดฐเดพเดžเตเดšเดฟเดฒเต‡เด•เตเด•เต เด•เต‹เดกเต เดŽเดดเตเดคเดพเตป เดคเดฏเตเดฏเดพเดฑเดพเดฃเต‹ เดŽเดจเตเดจเต เด‡เดคเต เดจเดฟเด™เตเด™เดณเต† เด…เดฑเดฟเดฏเดฟเด•เตเด•เตเด‚. master, เดชเดฆเตเดงเดคเดฟ เดจเดฟเตผเดฎเตเดฎเดพเดฃ เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเต† เด‡เดคเต เดคเด•เตผเด•เตเด•เตเดฎเต‹ เดŽเดจเตเดจเดคเตเด‚. เดˆ เด†เด—เต‹เดณ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเดฟเตฝ, เดžเดพเตป เดŽเดฒเตเดฒเดพเด‚ เดชเตเดฐเดพเดฆเต‡เดถเดฟเด•เดฎเดพเดฏเดฟ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เดชเดถเตเดšเดพเดคเตเดคเดฒเดคเตเดคเดฟเตฝ Webpack dev เดธเต†เตผเดตเตผ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต (เด‡เดคเต เดŽเตปเตเดฑเต† เดตเตผเด•เตเด•เตเดซเตเดฒเต‹เดฏเตเดŸเต† เดธเดตเดฟเดถเต‡เดทเดคเดฏเดพเดฃเต), เด•เต‚เดŸเดพเดคเต† เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•.

เดŸเต†เดธเตเดฑเตเดฑเต เด•เดตเดฑเต‡เดœเต เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจ เดฌเดพเดกเตโ€Œเดœเตเด•เตพ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดถเต‡เด–เดฐเดคเตเดคเดฟเตฝ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เตพ เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เด™เตเด•เดฟเตฝ, เด‡เดตเดฟเดŸเต† เดˆ เดตเดฟเดตเดฐเด™เตเด™เตพ เดถเต‡เด–เดฐเดฟเด•เตเด•เดพเดจเตเด‚ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เดพเดจเตเด‚ Jest, Travis CI, Coveralls เดŽเดจเตเดจเดฟเดต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดšเต†เดฑเดฟเดฏ เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เตพ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดฃเตเดŸเต†เดคเตเดคเดพเด‚.

เด…เดคเดฟเดจเดพเตฝ เดซเดฏเดฒเดฟเตปเตเดฑเต† เด‰เดณเตเดณเดŸเด•เตเด•เด‚ เด‡เดคเดพ .travis.yml:

# ะฃัั‚ะฐะฝะพะฒะธั‚ัŒ ัะทั‹ะบ
language: node_js

# ะฃัั‚ะฐะฝะพะฒะธั‚ัŒ ะฒะตั€ัะธัŽ Node.js
node_js:
  - '12'

services:
  # ะ˜ัะฟะพะปัŒะทะพะฒะฐั‚ัŒ ะบะพะผะฐะฝะดะฝัƒัŽ ัั‚ั€ะพะบัƒ Docker
  - docker

install:
  # ะฃัั‚ะฐะฝะพะฒะธั‚ัŒ ะทะฐะฒะธัะธะผะพัั‚ะธ ะดะปั ั‚ะตัั‚ะพะฒ
  - npm ci

before_script:
  # ะ—ะฐะฟัƒัั‚ะธั‚ัŒ ัะตั€ะฒะตั€ ะธ ะบะปะธะตะฝั‚ ะดะปั ั‚ะตัั‚ะพะฒ
  - npm run dev &

script:
  # ะ—ะฐะฟัƒัั‚ะธั‚ัŒ ั‚ะตัั‚ั‹
  - npm run test

เด‡เดตเดฟเดŸเต†เดฏเดพเดฃเต เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเตเดŸเต† เดŽเดฒเตเดฒเดพ เดถเดพเด–เด•เตพเด•เตเด•เตเด‚ เดชเตเตพ เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพเด•เตเด•เตเดฎเดพเดฏเดฟ เดจเดŸเดคเตเดคเตเดจเตเดจ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เด…เดตเดธเดพเดจเดฟเด•เตเด•เตเดจเตเดจเดคเต.

โ–เดตเดฟเดจเตเดฏเดพเดธเด‚

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

deploy:
  # ะกะพะฑั€ะฐั‚ัŒ Docker-ะบะพะฝั‚ะตะนะฝะตั€ ะธ ะพั‚ะฟั€ะฐะฒะธั‚ัŒ ะตะณะพ ะฝะฐ Docker Hub
  provider: script
  script: bash deploy.sh
  on:
    branch: master

เดตเดฟเดจเตเดฏเดพเดธ เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดฐเดฃเตเดŸเต เดชเตเดฐเดถเตเดจเด™เตเด™เตพ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เตเดจเตเดจเต:

  • เด’เดฐเต CI เดŸเต‚เตพ (เดžเด™เตเด™เดณเตเดŸเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดŸเตเดฐเดพเดตเดฟเดธเต เดธเดฟเด) เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดกเต‹เด•เตเด•เตผ เดนเดฌเตเดฌเดฟเดฒเต‡เด•เตเด•เต เดšเดฟเดคเตเดฐเด‚ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเด•, เดŸเดพเด—เต เดšเต†เดฏเตเดฏเตเด•, เด…เดฏเดฏเตเด•เตเด•เตเด•.
  • เดธเต†เตผเดตเดฑเดฟเตฝ เดšเดฟเดคเตเดฐเด‚ เดฒเต‹เดกเตเดšเต†เดฏเตเดฏเตเดจเตเดจเต, เดชเดดเดฏ เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เดจเดฟเตผเดคเตเดคเดฟ เดชเตเดคเดฟเดฏเตŠเดฐเต†เดฃเตเดฃเด‚ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต (เดžเด™เตเด™เดณเตเดŸเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดธเต†เตผเดตเตผ เดกเดฟเดœเดฟเดฑเตเดฑเตฝ เด“เดทเตเดฏเตป เดชเตเดฒเดพเดฑเตเดฑเตเดซเต‹เดฎเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต).

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

เด…เดคเดฟเดจเดพเตฝ, เดธเตโ€Œเด•เตเดฐเดฟเดชเตเดฑเตเดฑเดฟเตปเตเดฑเต† เด†เดฆเตเดฏ เดญเดพเด—เด‚ เดšเดฟเดคเตเดฐเด‚ เดกเต‹เด•เตเด•เตผ เดนเดฌเดฟเดฒเต‡เด•เตเด•เต เด…เดชเตโ€Œเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เด‡เดคเต เดšเต†เดฏเตเดฏเดพเตป เดตเดณเดฐเต† เดŽเดณเตเดชเตเดชเดฎเดพเดฃเต. เดžเดพเตป เด‰เดชเดฏเต‹เด—เดฟเดšเตเดš เดŸเดพเด—เดฟเด‚เด—เต เดธเตเด•เต€เดฎเดฟเตฝ เด’เดฐเต git เดนเดพเดทเตเด‚ เด’เดฐเต git เดŸเดพเด—เตเด‚ เด’เดจเตเดจเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ เด…เดคเต เดธเด‚เดฏเต‹เดœเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดพเดฃเต. เด‡เดคเต เดŸเดพเด—เต เด…เดฆเตเดตเดฟเดคเต€เดฏเดฎเดพเดฃเต†เดจเตเดจเต เด‰เดฑเดชเตเดชเดพเด•เตเด•เตเด•เดฏเตเด‚ เด…เดคเต เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟเดฏเตเดณเตเดณ เด…เดธเด‚เดฌเตเดฒเดฟ เดคเดฟเดฐเดฟเดšเตเดšเดฑเดฟเดฏเตเดจเตเดจเดคเต เดŽเดณเตเดชเตเดชเดฎเดพเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. DOCKER_USERNAME ะธ DOCKER_PASSWORD เดŸเตเดฐเดพเดตเดฟเดธเต เดธเดฟเด เด‡เตปเตเดฑเตผเดซเต‡เดธเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดธเดœเตเดœเดฎเดพเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเดจเตเดจ เด‰เดชเดฏเต‹เด•เตเดคเตƒ เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเดพเดฃเต. เดŸเตเดฐเดพเดตเดฟเดธเต เดธเดฟเด เดธเต†เตปเดธเดฟเดฑเตเดฑเต€เดตเต เดกเดพเดฑเตเดฑ เดธเตเดตเดฏเดฎเต‡เดต เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเด‚, เด…เด™เตเด™เดจเต† เด…เดคเต เดคเต†เดฑเตเดฑเดพเดฏ เด•เตˆเด•เดณเดฟเตฝ เดตเต€เดดเดฟเดฒเตเดฒ.

เดคเดฟเดฐเด•เตเด•เดฅเดฏเตเดŸเต† เด†เดฆเตเดฏเดญเดพเด—เด‚ เด‡เดคเดพ deploy.sh.

#!/bin/sh
set -e # ะžัั‚ะฐะฝะพะฒะธั‚ัŒ ัะบั€ะธะฟั‚ ะฟั€ะธ ะฝะฐะปะธั‡ะธะธ ะพัˆะธะฑะพะบ

IMAGE="<username>/<repository>"                             # ะžะฑั€ะฐะท Docker
GIT_VERSION=$(git describe --always --abbrev --tags --long) # Git-ั…ััˆ ะธ ั‚ะตะณะธ

# ะกะฑะพั€ะบะฐ ะธ ั‚ะตะณะธั€ะพะฒะฐะฝะธะต ะพะฑั€ะฐะทะฐ
docker build -t ${IMAGE}:${GIT_VERSION} .
docker tag ${IMAGE}:${GIT_VERSION} ${IMAGE}:latest

# ะ’ั…ะพะด ะฒ Docker Hub ะธ ะฒั‹ะณั€ัƒะทะบะฐ ะพะฑั€ะฐะทะฐ
echo "${DOCKER_PASSWORD}" | docker login -u "${DOCKER_USERNAME}" --password-stdin
docker push ${IMAGE}:${GIT_VERSION}

เดธเตโ€Œเด•เตเดฐเดฟเดชเตเดฑเตเดฑเดฟเตปเตเดฑเต† เดฐเดฃเตเดŸเดพเด‚ เดญเดพเด—เด‚ เดŽเดจเตเดคเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚, เดจเดฟเด™เตเด™เตพ เดเดคเต เดนเต‹เดธเตเดฑเตเดฑเดพเดฃเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต, เด…เดคเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด•เดฃเด•เตเดทเตป เดŽเด™เตเด™เดจเต†เดฏเดพเดฃเต เด•เตเดฐเดฎเต€เด•เดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต เดŽเดจเตเดจเดคเดฟเดจเต† เด†เดถเตเดฐเดฏเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดŽเตปเตเดฑเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดžเดพเตป เดกเดฟเดœเดฟเดฑเตเดฑเตฝ เด“เดทเตเดฏเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเดพเตฝ, เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต เด•เดฃเด•เตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเดพเตป เดžเดพเตป เด•เดฎเดพเตปเดกเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต doctl. AWS-เตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดฏเต‚เดŸเตเดŸเดฟเดฒเดฟเดฑเตเดฑเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด‚ aws, เด‡เดคเตเดฏเดพเดฆเดฟ.

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

เดธเต‡เดตเดจเดคเตเดคเดฟเดจเดพเดฏเตเดณเตเดณ เดชเตเดฐเดคเตเดฏเต‡เด• เด•เดฎเดพเตปเดกเตเด•เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดžเดพเตป เด‡เดตเดฟเดŸเต† เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ, เด•เดพเดฐเดฃเด‚ เดˆ เดตเดถเด‚ เดตเตเดฏเดคเตเดฏเดธเตเดค เดธเดจเตเดฆเตผเดญเด™เตเด™เดณเดฟเตฝ เดตเดณเดฐเต† เดตเตเดฏเดคเตเดฏเดพเดธเดชเตเดชเต†เดŸเตเดŸเต‡เด•เตเด•เดพเด‚. เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เตเดจเตเดจ เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต SSH เดตเดดเดฟ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดšเตเดšเดคเดฟเดจเต เดถเต‡เดทเด‚ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เต‡เดฃเตเดŸ เด’เดฐเต เดชเตŠเดคเต เดชเตเดฐเดตเตผเดคเตเดคเดจ เดชเดฆเตเดงเดคเดฟ เดžเดพเตป เดจเตฝเด•เตเด‚:

  • เดจเดฟเดฒเดตเดฟเตฝ เด“เดŸเดฟเด•เตเด•เตŠเดฃเตเดŸเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเตผ เด•เดฃเตเดŸเต†เดคเตเดคเดฟ เดจเดฟเตผเดคเตเดคเดฃเด‚.
  • เด…เดคเดฟเดจเตเดถเต‡เดทเด‚ เดจเดฟเด™เตเด™เตพ เดชเดถเตเดšเดพเดคเตเดคเดฒเดคเตเดคเดฟเตฝ เด’เดฐเต เดชเตเดคเดฟเดฏ เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต.
  • เดจเดฟเด™เตเด™เตพ เดธเต†เตผเดตเดฑเดฟเตปเตเดฑเต† เดฒเต‹เด•เตเด•เตฝ เดชเต‹เตผเดŸเตเดŸเต เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต 80 - เด‡เดคเตเดชเต‹เดฒเตเดณเตเดณ เด’เดฐเต เดตเดฟเดฒเดพเดธเดคเตเดคเดฟเตฝ เดธเตˆเดฑเตเดฑเดฟเตฝ เดชเตเดฐเดตเต‡เดถเดฟเด•เตเด•เดพเตป เด‡เดคเต เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเด‚ example.com, เดชเต‹เตผเดŸเตเดŸเต เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดพเดคเต†, เด’เดฐเต เดตเดฟเดฒเดพเดธเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดชเด•เดฐเด‚ example.com:5000.
  • เด…เดตเดธเดพเดจเดฎเดพเดฏเดฟ, เดจเดฟเด™เตเด™เตพ เดŽเดฒเตเดฒเดพ เดชเดดเดฏ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เดณเตเด‚ เดšเดฟเดคเตเดฐเด™เตเด™เดณเตเด‚ เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต.

เดคเดฟเดฐเด•เตเด•เดฅเดฏเตเดŸเต† เดคเตเดŸเตผเดšเตเดš เด‡เดคเดพ.

# ะะฐะนั‚ะธ ID ั€ะฐะฑะพั‚ะฐัŽั‰ะตะณะพ ะบะพะฝั‚ะตะนะฝะตั€ะฐ
CONTAINER_ID=$(docker ps | grep takenote | cut -d" " -f1)

# ะžัั‚ะฐะฝะพะฒะธั‚ัŒ ัั‚ะฐั€ั‹ะน ะบะพะฝั‚ะตะนะฝะตั€, ะทะฐะฟัƒัั‚ะธั‚ัŒ ะฝะพะฒั‹ะน, ะพั‡ะธัั‚ะธั‚ัŒ ัะธัั‚ะตะผัƒ
docker stop ${CONTAINER_ID}
docker run --restart unless-stopped -d -p 80:5000 ${IMAGE}:${GIT_VERSION}
docker system prune -a -f

เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เต‡เดฃเตเดŸ เดšเดฟเดฒ เด•เดพเดฐเตเดฏเด™เตเด™เตพ

เดŸเตเดฐเดพเดตเดฟเดธเต เดธเดฟเดเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดŽเดธเตเดŽเดธเตเดŽเดšเตเดšเต เดตเดดเดฟ เดจเดฟเด™เตเด™เตพ เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต เด•เดฃเด•เตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ, เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเตปเตเดฑเต† เดชเตเดฐเดคเดฟเด•เดฐเดฃเดคเตเดคเดฟเดจเดพเดฏเดฟ เดธเดฟเดธเตเดฑเตเดฑเด‚ เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเดพเตฝ เด‡เตปเดธเตเดฑเตเดฑเดพเดณเต‡เดทเดจเดฟเตฝ เดคเตเดŸเดฐเตเดจเตเดจเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเดฟเด™เตเด™เดณเต† เดคเดŸเดฏเตเดจเตเดจ เด’เดฐเต เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต เดจเดฟเด™เตเด™เตพ เด•เดพเดฃเตเด‚.

The authenticity of host '<hostname> (<IP address>)' can't be established.
RSA key fingerprint is <key fingerprint>.
Are you sure you want to continue connecting (yes/no)?

เด’เดฐเต เดธเตเดŸเตเดฐเดฟเด‚เด—เต เด•เต€ เดฌเต‡เดธเต64-เตฝ เดŽเตปเด•เต‹เดกเต เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเดฎเต†เดจเตเดจเต เดžเดพเตป เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เดฟ, เด…เดคเต เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดฏเตเด‚ เดตเดฟเดถเตเดตเดธเดจเต€เดฏเดฎเดพเดฏเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเดจเตเดจ เด’เดฐเต เดฐเต‚เดชเดคเตเดคเดฟเตฝ เดธเด‚เดฐเด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต. เด‡เตปเดธเตเดฑเตเดฑเดพเดณเต‡เดทเตป เด˜เดŸเตเดŸเดคเตเดคเดฟเตฝ, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดชเดฌเตเดฒเดฟเด•เต เด•เต€ เดกเต€เด•เต‹เดกเต เดšเต†เดฏเตเดคเต เด’เดฐเต เดซเดฏเดฒเดฟเดฒเต‡เด•เตเด•เต เดŽเดดเตเดคเดพเด‚ known_hosts เดฎเต‡เตฝเดชเตเดชเดฑเดžเตเดž เดชเดฟเดถเด•เดฟเตฝ เดจเดฟเดจเตเดจเต เดฎเตเด•เตเดคเดฟ เดจเต‡เดŸเตเดจเตเดจเดคเดฟเดจเต.

echo <public key> | base64 # ะฒั‹ะฒะพะดะธั‚ <ะฟัƒะฑะปะธั‡ะฝั‹ะน ะบะปัŽั‡, ะทะฐะบะพะดะธั€ะพะฒะฐะฝะฝั‹ะน ะฒ base64>

เดชเตเดฐเดพเดฏเต‹เด—เดฟเด•เดฎเดพเดฏเดฟ, เดˆ เด•เดฎเดพเตปเดกเต เด‡เดคเตเดชเต‹เดฒเต†เดฏเดพเด•เดพเด‚:

echo "123.45.67.89 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAklOUpkDHrfHY17SbrmTIpNLTGK9Tjom/BWDSU
GPl+nafzlHDTYW7hdI4yZ5ew18JH4JW9jbhUFrviQzM7xlELEVf4h9lFX5QVkbPppSwg0cda3
Pbv7kOdJ/MTyBlWXFCR+HAo3FXRitBqxiX1nKhXpHAZsMciLq8V6RjsNAQwdsdMFvSlVK/7XA
t3FaoJoAsncM1Q9x5+3V0Ww68/eIFmb1zuUFljQJKprrX88XypNDvjYNby6vw/Pb0rwert/En
mZ+AW4OZPnTPI89ZPmVMLuayrD2cE86Z/il8b+gw3r3+1nKatmIkjn2so1d01QraTlMqVSsbx
NrRFi9wrf+M7Q== [email protected]" | base64

เด‡เดคเต เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจเดคเต เด‡เดคเดพ - เด’เดฐเต base64 เดŽเตปเด•เต‹เดกเต เดšเต†เดฏเตเดค เดธเตเดŸเตเดฐเดฟเด‚เด—เต:

MTIzLjQ1LjY3Ljg5IHNzaC1yc2EgQUFBQUIzTnphQzF5YzJFQUFBQUJJd0FBQVFFQWtsT1Vwa0RIcmZIWTE3U2JybVRJcE5MVEdLOVRqb20vQldEU1UKR1BsK25hZnpsSERUWVc3aGRJNHlaNWV3MThKSDRKVzlqYmhVRnJ2aVF6TTd4bEVMRVZmNGg5bEZYNVFWa2JQcHBTd2cwY2RhMwpQYnY3a09kSi9NVHlCbFdYRkNSK0hBbzNGWFJpdEJxeGlYMW5LaFhwSEFac01jaUxxOFY2UmpzTkFRd2RzZE1GdlNsVksvN1hBCnQzRmFvSm9Bc25jTTFROXg1KzNWMFd3NjgvZUlGbWIxenVVRmxqUUpLcHJyWDg4WHlwTkR2allOYnk2dncvUGIwcndlcnQvRW4KbVorQVc0T1pQblRQSTg5WlBtVk1MdWF5ckQyY0U4NlovaWw4YitndzNyMysxbkthdG1Ja2puMnNvMWQwMVFyYVRsTXFWU3NieApOclJGaTl3cmYrTTdRPT0geW91QGV4YW1wbGUuY29tCg==

เดฎเตเด•เดณเดฟเตฝ เดธเต‚เดšเดฟเดชเตเดชเดฟเดšเตเดš เด•เดฎเดพเตปเดกเต เด‡เดคเดพ

install:
  - echo < ะฟัƒะฑะปะธั‡ะฝั‹ะน ะบะปัŽั‡, ะทะฐะบะพะดะธั€ะพะฒะฐะฝะฝั‹ะน ะฒ base64> | base64 -d >> $HOME/.ssh/known_hosts

เดธเต†เตผเดตเตผ เด†เด•เตเดธเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดธเตเดตเด•เดพเดฐเตเดฏ เด•เต€ เด†เดตเดถเตเดฏเดฎเดพเดฏเดฟ เดตเดจเตเดจเต‡เด•เตเด•เดพเด‚ เดŽเดจเตเดจเดคเดฟเดจเดพเตฝ, เด’เดฐเต เด•เดฃเด•เตเดทเตป เดธเตเดฅเดพเดชเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เด’เดฐเต เดธเตเดตเด•เดพเดฐเตเดฏ เด•เต€ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเตเด‚ เด‡เดคเต‡ เดธเดฎเต€เดชเดจเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚. เด•เต€ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เด…เดคเต เด’เดฐเต เดŸเตเดฐเดพเดตเดฟเดธเต เดธเดฟเด เดŽเตปเดตเดฏเต‹เตบเดฎเต†เตปเตเดฑเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเดฟเตฝ เดธเตเดฐเด•เตเดทเดฟเดคเดฎเดพเดฏเดฟ เดธเด‚เดญเดฐเดฟเดšเตเดšเดฟเดŸเตเดŸเตเดฃเตเดŸเต†เดจเตเดจเตเด‚ เด…เดคเต เดŽเดตเดฟเดŸเต†เดฏเตเด‚ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒเต†เดจเตเดจเตเด‚ เด‰เดฑเดชเตเดชเดพเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต.

เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เต‡เดฃเตเดŸ เดฎเดฑเตเดฑเตŠเดฐเต เด•เดพเดฐเตเดฏเด‚, เดจเดฟเด™เตเด™เตพ เดฎเตเดดเตเดตเตป เดตเดฟเดจเตเดฏเดพเดธ เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตเด‚ เด’เดฐเต เดตเดฐเดฟเดฏเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต - เด•เต‚เดŸเต† doctl. เด‡เดคเดฟเดจเต เด•เตเดฑเดšเตเดšเต เด…เดงเดฟเด• เดชเดฐเดฟเดถเตเดฐเดฎเด‚ เด†เดตเดถเตเดฏเดฎเดพเดฏเดฟ เดตเดจเตเดจเต‡เด•เตเด•เดพเด‚.

doctl compute ssh <droplet> --ssh-command "ะฒัะต ะบะพะผะฐะฝะดั‹ ะฑัƒะดัƒั‚ ะทะดะตััŒ && ะทะดะตััŒ"

TLS/SSL, เดฒเต‹เดกเต เดฌเดพเดฒเตปเดธเดฟเด™เต

เดžเดพเตป เดฎเตเด•เดณเดฟเตฝ เดชเดฑเดžเตเดžเดคเต†เดฒเตเดฒเดพเด‚ เดšเต†เดฏเตเดคเดคเดฟเดจเต เดถเต‡เดทเด‚, เดžเดพเตป เดจเต‡เดฐเดฟเดŸเตเดŸ เด…เดตเดธเดพเดจ เดชเตเดฐเดถเตเดจเด‚ เดธเต†เตผเดตเดฑเดฟเดจเต SSL เด‡เดฒเตเดฒเดพเดฏเดฟเดฐเตเดจเตเดจเต เดŽเดจเตเดจเดคเดพเดฃเต. เดžเดพเตป เด’เดฐเต Node.js เดธเต†เตผเดตเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเดพเตฝ, เดจเดฟเตผเดฌเดจเตเดงเดฟเด•เตเด•เดพเตป เดตเต‡เดฃเตเดŸเดฟ เดœเต‹เดฒเดฟ เดšเต†เดฏเตเดฏเดพเตป เดฑเดฟเดตเต‡เดดเตเดธเต เดชเตเดฐเต‹เด•เตเดธเดฟ Nginx เด‰เด‚ เดจเดฎเตเด•เตเด•เต เดŽเตปเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดšเต†เดฏเตเดฏเดพเด‚, เดจเดฟเด™เตเด™เตพ เด’เดฐเตเดชเดพเดŸเต เดŸเดฟเด™เตเด•เตผ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต.

เดˆ เดŽเดฒเตเดฒเดพ SSL เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเตเด‚ เดธเตเดตเดฎเต‡เดงเดฏเดพ เดšเต†เดฏเตเดฏเดพเตป เดžเดพเตป เดถเดฐเดฟเด•เตเด•เตเด‚ เด†เด—เตเดฐเดนเดฟเดšเตเดšเดฟเดฒเตเดฒ, เด…เดคเดฟเดจเดพเตฝ เดžเดพเตป เด’เดฐเต เดฒเต‹เดกเต เดฌเดพเดฒเตปเดธเตผ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด…เดคเดฟเตปเตเดฑเต† เดตเดฟเดถเดฆเดพเด‚เดถเด™เตเด™เตพ DNS-เตฝ เดฐเต‡เด–เดชเตเดชเต†เดŸเตเดคเตเดคเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดคเต. DigitalOcean-เตปเตเดฑเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดฒเต‹เดกเต เดฌเดพเดฒเตปเดธเดฑเดฟเตฝ เดธเตเดตเดฏเดฎเต‡เดต เดชเตเดคเตเด•เตเด•เตเดจเตเดจ เดธเตเดตเดฏเด‚ เด’เดชเตเดชเดฟเดŸเตเดŸ เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเต เดฒเดณเดฟเดคเดตเตเด‚ เดธเต—เดœเดจเตเดฏเดตเตเด‚ เดตเต‡เด—เดฎเต‡เดฑเดฟเดฏเดคเตเดฎเดพเดฏ เดจเดŸเดชเดŸเดฟเด•เตเดฐเดฎเดฎเดพเดฃเต. เดˆ เดธเดฎเต€เดชเดจเดคเตเดคเดฟเดจเต เด…เดงเดฟเด• เดจเต‡เดŸเตเดŸเดฎเตเดฃเตเดŸเต, เด†เดตเดถเตเดฏเดฎเต†เด™เตเด•เดฟเตฝ เด’เดฐเต เดฒเต‹เดกเต เดฌเดพเดฒเตปเดธเดฑเดฟเดจเต เดชเดฟเดจเตเดจเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เด’เดจเตเดจเดฟเดฒเดงเดฟเด•เด‚ เดธเต†เตผเดตเดฑเตเด•เดณเดฟเตฝ SSL เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต เดตเดณเดฐเต† เดŽเดณเตเดชเตเดชเดฎเดพเด•เตเด•เตเดจเตเดจเต. เด‡เดคเต เดธเต†เตผเดตเดฑเตเด•เตพ เดคเดจเตเดจเต† SSL เดจเต† เด•เตเดฑเดฟเดšเตเดšเต "เดšเดฟเดจเตเดคเดฟเด•เตเด•เดพเดคเดฟเดฐเดฟเด•เตเด•เดพเตป" เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต, เดŽเดจเตเดจเดพเตฝ เด…เดคเต‡ เดธเดฎเดฏเด‚ เดธเดพเดงเดพเดฐเดฃ เดชเต‹เดฒเต† เดชเต‹เตผเดŸเตเดŸเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด• 80. เด…เดคเดฟเดจเดพเตฝ เด’เดฐเต เดฒเต‹เดกเต เดฌเดพเดฒเตปเดธเดฑเดฟเตฝ SSL เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต SSL เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด‡เดคเดฐ เดฐเต€เดคเดฟเด•เดณเต‡เด•เตเด•เดพเตพ เดตเดณเดฐเต† เดŽเดณเตเดชเตเดชเดตเตเด‚ เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดตเตเดฎเดพเดฃเต.

เด‡เดชเตเดชเต‹เตพ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‡เตปเด•เดฎเดฟเด‚เด—เต เด•เดฃเด•เตเดทเดจเตเด•เตพ เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจ เดธเต†เตผเดตเดฑเดฟเดฒเต† เดŽเดฒเตเดฒเดพ เดชเต‹เตผเดŸเตเดŸเตเด•เดณเตเด‚ เด…เดŸเดฏเตเด•เตเด•เดพเด‚ - เดชเต‹เตผเดŸเตเดŸเต เด’เดดเดฟเด•เต† 80, เดฒเต‹เดกเต เดฌเดพเดฒเตปเดธเดฑเตเดฎเดพเดฏเตเด‚ เดชเต‹เตผเดŸเตเดŸเตเดฎเดพเดฏเตเด‚ เด†เดถเดฏเดตเดฟเดจเดฟเดฎเดฏเด‚ เดจเดŸเดคเตเดคเดพเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต 22 เดŽเดธเต.เดŽเดธเต.เดŽเดšเตเดšเต. เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เด‡เดต เดฐเดฃเตเดŸเตเด‚ เด’เดดเดฟเด•เต† เดฎเดฑเตเดฑเต‡เดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดชเต‹เตผเดŸเตเดŸเตเด•เดณเดฟเตฝ เดธเต†เตผเดตเตผ เดจเต‡เดฐเดฟเดŸเตเดŸเต เด†เด•เตเดธเดธเต เดšเต†เดฏเตเดฏเดพเดจเตเดณเตเดณ เดถเตเดฐเดฎเด‚ เดชเดฐเดพเดœเดฏเดชเตเดชเต†เดŸเตเด‚.

เดซเดฒเด™เตเด™เตพ

เดˆ เดฎเต†เดฑเตเดฑเต€เดฐเดฟเดฏเดฒเดฟเตฝ เดžเดพเตป เดธเด‚เดธเดพเดฐเดฟเดšเตเดšเดคเต†เดฒเตเดฒเดพเด‚ เดšเต†เดฏเตเดคเดคเดฟเดจเต เดถเต‡เดทเด‚, เดกเต‹เด•เตเด•เตผ เดชเตเดฒเดพเดฑเตเดฑเตโ€Œเดซเต‹เดฎเต‹ เด“เดŸเตเดŸเต‹เดฎเต‡เดฑเตเดฑเดกเต CI/CD เดšเต†เดฏเดฟเดจเตเด•เดณเตเดŸเต† เด†เดถเดฏเด™เตเด™เดณเต‹ เดŽเดจเตเดจเต† เดญเดฏเดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏเดฟเดฒเตเดฒ. เด’เดฐเต เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดธเด‚เดฏเต‹เดœเดจ เดถเตƒเด‚เด–เดฒ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เดพเตป เดŽเดจเดฟเด•เตเด•เต เด•เดดเดฟเดžเตเดžเต, เดˆ เดธเดฎเดฏเดคเตเดคเต เด•เต‹เดกเต เด‰เตฝเดชเตเดชเดพเดฆเดจเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เดชเดฐเต€เด•เตเดทเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด•เต‹เดกเต เดธเต†เตผเดตเดฑเดฟเตฝ เดธเตเดตเดฏเดฎเต‡เดต เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เด‡เดคเต†เดฒเตเดฒเดพเด‚ เดŽเดจเดฟเด•เตเด•เต เด‡เดชเตเดชเต‹เดดเตเด‚ เดคเดพเดฐเดคเดฎเตเดฏเต‡เดจ เดชเตเดคเดฟเดฏเดคเดพเดฃเต, เดŽเตปเตเดฑเต† เดธเตเดตเดฏเดฎเต‡เดตเดฏเตเดณเตเดณ เดตเตผเด•เตเด•เตเดซเตเดฒเต‹ เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดคเตเดคเดพเดจเตเด‚ เด…เดคเต เด•เต‚เดŸเตเดคเตฝ เด•เดพเดฐเตเดฏเด•เตเดทเดฎเดฎเดพเด•เตเด•เดพเดจเตเด‚ เดตเดดเดฟเด•เดณเตเดฃเตเดŸเต†เดจเตเดจเต เดŽเดจเดฟเด•เตเด•เต เด‰เดฑเดชเตเดชเตเดฃเตเดŸเต. เด…เดคเดฟเดจเดพเตฝ เดˆ เดตเดฟเดทเดฏเดคเตเดคเดฟเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เด†เดถเดฏเด™เตเด™เตพ เด‰เดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เดฆเดฏเดตเดพเดฏเดฟ เดŽเดจเตเดจเต† เด…เดฑเดฟเดฏเดฟเด•เตเด•เตเด•. เดžเดพเตป เด…เดฑเดฟเดฏเดพเด‚. เดจเดฟเด™เตเด™เดณเตเดŸเต† เดถเตเดฐเดฎเด™เตเด™เดณเดฟเตฝ เดˆ เดฒเต‡เด–เดจเด‚ เดจเดฟเด™เตเด™เดณเต† เดธเดนเดพเดฏเดฟเดšเตเดšเดฟเดŸเตเดŸเตเดฃเตเดŸเต†เดจเตเดจเต เดžเดพเตป เดชเตเดฐเดคเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต. เดตเดพเดฏเดฟเดšเตเดšเดคเดฟเดจเตเดถเต‡เดทเด‚, เดžเดพเตป เด…เดคเดฟเตฝ เดธเด‚เดธเดพเดฐเดฟเดšเตเดšเดคเต†เดฒเตเดฒเดพเด‚ เด•เดฃเตเดŸเต†เดคเตเดคเตเดฎเตเดชเต‹เตพ เดžเดพเตป เดชเด เดฟเดšเตเดšเดคเตเดชเต‹เดฒเต† เดจเดฟเด™เตเด™เตพ เดชเด เดฟเดšเตเดšเตเดตเต†เดจเตเดจเต เดตเดฟเดถเตเดตเดธเดฟเด•เตเด•เดพเตป เดžเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต.

เดชเดฟ.เดŽเดธเต เดžเด™เตเด™เดณเตเดŸเต† เดšเดจเตเดคเดธเตเดฅเดฒเด‚ เด’เดฐเต เดšเดฟเดคเตเดฐเดฎเตเดฃเตเดŸเต เดกเต‹เด•เตเด•เตผ, เด‡เดคเต เด’เดฑเตเดฑ เด•เตเดฒเดฟเด•เตเด•เดฟเตฝ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚. เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เดณเตเดŸเต† เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เด‡เดตเดฟเดŸเต† เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดพเด‚ VPS เดฒเต‡เด•เตเด•เต. เดŽเดฒเตเดฒเดพ เดชเตเดคเดฟเดฏ เด•เตเดฒเดฏเดจเตเดฑเตเด•เตพเด•เตเด•เตเด‚ 3 เดฆเดฟเดตเดธเดคเตเดคเต† เดŸเต†เดธเตเดฑเตเดฑเดฟเด‚เด—เต เดธเต—เดœเดจเตเดฏเดฎเดพเดฏเดฟ เดจเตฝเด•เตเดจเตเดจเต.

เดชเตเดฐเดฟเดฏ เดตเดพเดฏเดจเด•เตเด•เดพเตผ! เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเต‹เดœเด•เตเดŸเตเด•เดณเดฟเตฝ เดจเดฟเด™เตเด™เตพ CI/CD เดธเดพเด™เตเด•เต‡เดคเดฟเด•เดตเดฟเดฆเตเดฏเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเตเดฃเตเดŸเต‹?

เด’เดฐเต CI/CD เดถเตƒเด‚เด–เดฒ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดกเต‹เด•เตเด•เตผ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดตเตผเด•เตเด•เต เด“เดŸเตเดŸเต‹เดฎเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•