เจ‡เฉฑเจ• เจธเฉ€เจ†เจˆ/เจธเฉ€เจกเฉ€ เจšเฉ‡เจจ เจฌเจฃเจพเจ‰เจฃเจพ เจ…เจคเฉ‡ เจกเฉŒเจ•เจฐ เจจเจพเจฒ เจ†เจŸเฉ‹เจฎเฉˆเจŸเจฟเจ• เจ•เฉฐเจฎ เจ•เจฐเจจเจพ

เจฎเฉˆเจ‚ 90เจตเจฟเจ†เจ‚ เจฆเฉ‡ เจ…เจ–เฉ€เจฐ เจตเจฟเฉฑเจš เจ†เจชเจฃเฉ€เจ†เจ‚ เจชเจนเจฟเจฒเฉ€เจ†เจ‚ เจตเฉˆเฉฑเจฌเจธเจพเจˆเจŸเจพเจ‚ เจฒเจฟเจ–เฉ€เจ†เจ‚เฅค เจ‰เจธ เจธเจฎเฉ‡เจ‚ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ•เฉฐเจฎเจ•เจพเจœเฉ€ เจ•เฉเจฐเจฎ เจตเจฟเฉฑเจš เจฐเฉฑเจ–เจฃเจพ เจฌเจนเฉเจค เจ†เจธเจพเจจ เจธเฉ€เฅค เจ•เฉเจ เจธเจผเฉ‡เจ…เจฐเจก เจนเฉ‹เจธเจŸเจฟเฉฐเจ— 'เจคเฉ‡ เจ‡เฉฑเจ• เจ…เจชเจพเจšเฉ‡ เจธเจฐเจตเจฐ เจธเฉ€, เจคเฉเจธเฉ€เจ‚ เจ•เฉเจ เจ…เจœเจฟเจนเจพ เจฒเจฟเจ– เจ•เฉ‡ FTP เจฐเจพเจนเฉ€เจ‚ เจ‡เจธ เจธเจฐเจตเจฐ เจตเจฟเฉฑเจš เจฒเฉŒเจ—เจ‡เจจ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ ftp://ftp.example.com. เจซเจฟเจฐ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ†เจชเจฃเจพ เจจเจพเจฎ เจ…เจคเฉ‡ เจชเจพเจธเจตเจฐเจก เจฆเจฐเจœ เจ•เจฐเจจเจพ เจชเจเจ—เจพ เจ…เจคเฉ‡ เจซเจพเจˆเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจธเจฐเจตเจฐ 'เจคเฉ‡ เจ…เจชเจฒเฉ‹เจก เจ•เจฐเจจเจพ เจชเจเจ—เจพเฅค เจตเฉฑเจ–เฉ‹ เจตเฉฑเจ–เจฐเฉ‡ เจธเจฎเฉ‡เจ‚ เจธเจจ, เจธเจญ เจ•เฉเจ เจนเฉเจฃ เจจเจพเจฒเฉ‹เจ‚ เจธเฉŒเจ–เจพ เจธเฉ€.

เจ‡เฉฑเจ• เจธเฉ€เจ†เจˆ/เจธเฉ€เจกเฉ€ เจšเฉ‡เจจ เจฌเจฃเจพเจ‰เจฃเจพ เจ…เจคเฉ‡ เจกเฉŒเจ•เจฐ เจจเจพเจฒ เจ†เจŸเฉ‹เจฎเฉˆเจŸเจฟเจ• เจ•เฉฐเจฎ เจ•เจฐเจจเจพ

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

เจฎเฉ‡เจฐเฉ‡ เจจเจฟเฉฑเจœเฉ€ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฒเจˆ เจฎเฉ‡เจฐเฉ‡ เจ•เฉ‹เจฒ เจ‡เฉฑเจ• เจตเจฟเจธเจผเฉ‡เจธเจผ เจธเฉฐเจฐเจšเจจเจพ เจธเฉ€. เจ…เจคเฉ‡ เจฎเฉˆเจ‚ เจœเจพเจฃเจฆเจพ เจธเฉ€ เจ•เจฟ เจฎเฉˆเจจเฉ‚เฉฐ เจธเจฟเจฐเจซ เจ‡เฉฑเจ• เจ•เจพเจฐเจตเจพเจˆ เจ•เจฐเจ•เฉ‡ เจธเจพเจˆเจŸ เจจเฉ‚เฉฐ เจ‰เจคเจชเจพเจฆเจจ เจตเจฟเฉฑเจš เจคเฉˆเจจเจพเจค เจ•เจฐเจจ เจฆเฉ€ เจฏเฉ‹เจ—เจคเจพ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ: เจ‡เฉฑเจ• เจธเจผเจพเจ–เจพ เจจเฉ‚เฉฐ เจ•เฉ‹เจก เจฒเจฟเจ–เจฃเจพ master GitHub 'เจคเฉ‡. เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจฎเฉˆเจ‚ เจœเจพเจฃเจฆเจพ เจธเฉ€ เจ•เจฟ เจฎเฉ‡เจฐเฉ€ เจ›เฉ‹เจŸเฉ€ เจตเฉˆเจฌ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ‡ เจธเฉฐเจšเจพเจฒเจจ เจจเฉ‚เฉฐ เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ, เจฎเฉˆเจ‚ เจ‡เฉฑเจ• เจตเจฟเจธเจผเจพเจฒ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจ•เจฒเฉฑเจธเจŸเจฐ เจฆเจพ เจชเฉเจฐเจฌเฉฐเจงเจจ เจจเจนเฉ€เจ‚ เจ•เจฐเจจเจพ เจšเจพเจนเฉเฉฐเจฆเจพ เจธเฉ€, เจœเจพเจ‚ เจกเฉŒเจ•เจฐ เจธเจตเฉˆเจฐเจฎ เจคเจ•เจจเจพเจฒเฉ‹เจœเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจจเจนเฉ€เจ‚ เจ•เจฐเจจเจพ เจšเจพเจนเฉเฉฐเจฆเจพ เจธเฉ€, เจœเจพเจ‚ เจชเฉŒเจก, เจเจœเฉฐเจŸ เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจธเจพเจฐเฉ‡ เจคเจฐเฉเจนเจพเจ‚ เจฆเฉ‡ เจธเจฐเจตเจฐเจพเจ‚ เจฆเฉ‡ เจซเจฒเฉ€เจŸ เจจเฉ‚เฉฐ เจ•เจพเจ‡เจฎ เจฐเฉฑเจ–เจฃเจพ เจšเจพเจนเฉเฉฐเจฆเจพ เจธเฉ€เฅค เจœเจŸเจฟเจฒเจคเจพเจตเจพเจ‚ เจ•เฉฐเจฎ เจจเฉ‚เฉฐ เจœเจฟเฉฐเจจเจพ เจธเฉฐเจญเจต เจนเฉ‹ เจธเจ•เฉ‡ เจ†เจธเจพเจจ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ‡ เจŸเฉ€เจšเฉ‡ เจจเฉ‚เฉฐ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฒเจˆ, เจฎเฉˆเจจเฉ‚เฉฐ CI/CD เจจเจพเจฒ เจœเจพเจฃเฉ‚ เจนเฉ‹เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจธเฉ€เฅค

เจœเฉ‡ เจคเฉเจนเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ‡เฉฑเจ• เจ›เฉ‹เจŸเจพ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจนเฉˆ (เจ‡เจธ เจ•เฉ‡เจธ เจตเจฟเฉฑเจš, เจ‡เฉฑเจ• Node.js เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ) เจ…เจคเฉ‡ เจคเฉเจธเฉ€เจ‚ เจ‡เจน เจœเจพเจฃเจจเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเฉ‹ เจ•เจฟ เจ‡เจธ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเฉ€ เจคเฉˆเจจเจพเจคเฉ€ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจธเจตเฉˆเจšเจฒเจฟเจค เจ•เจฐเจจเจพ เจนเฉˆ, เจœเจฆเฉ‹เจ‚ เจ•เจฟ เจ‡เจน เจธเฉเจจเจฟเจธเจผเจšเจฟเจค เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจ•เจฟ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจœเฉ‹ เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ เจ‰เจน เจ‰เจคเจชเจพเจฆเจจ เจตเจฟเฉฑเจš เจ•เฉฐเจฎ เจ•เจฐเจจ เจตเจพเจฒเฉ‡ เจจเจพเจฒ เจฎเฉ‡เจฒ เจ–เจพเจ‚เจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจฎเฉˆเจ‚ เจธเฉ‹เจšเฉ‹ เจ•เจฟ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เจธ เจฒเฉ‡เจ– เจตเจฟเฉฑเจš เจฆเจฟเจฒเจšเจธเจชเฉ€ เจนเฉ‹ เจธเจ•เจฆเฉ€ เจนเฉˆเฅค

เจชเฉ‚เจฐเจต -เจธเจผเจฐเจคเจพเจ‚

เจ‡เจธ เจฒเฉ‡เจ– เจฆเฉ‡ เจชเจพเจ เจ• เจคเฉ‹เจ‚ เจ‰เจฎเฉ€เจฆ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ เจ•เจฟ เจ‰เจน เจ•เจฎเจพเจ‚เจก เจฒเจพเจˆเจจ เจ…เจคเฉ‡ เจฌเฉˆเจธเจผ เจธเจ•เฉเจฐเจฟเจชเจŸเจพเจ‚ เจจเฉ‚เฉฐ เจฒเจฟเจ–เจฃ เจฆเฉ€ เจฎเฉเจขเจฒเฉ€ เจธเจฎเจ เจฐเฉฑเจ–เจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจ‰เจธ เจจเฉ‚เฉฐ เจ–เจพเจคเจฟเจ†เจ‚ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉ‹เจเจ—เฉ€ เจŸเฉเจฐเฉˆเจตเจฟเจธ เจธเฉ€.เจ†เจˆ. ะธ เจกเฉŒเจ•เจฐ เจนเฉฑเจฌ.

เจ‰เจฆเฉ‡เจธเจผ

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

เจ‡เจน เจ‰เจน เจนเฉˆ เจœเฉ‹ เจฎเฉ‡เจฐเจพ เจตเจฐเจ•เจซเจฒเฉ‹ เจ–เจคเจฎ เจนเฉ‹เจ‡เจ†.

เจธเจฟเจตเจพเจ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจธเจผเจพเจ–เจพ เจจเฉ‚เฉฐ เจชเฉ‹เจธเจŸ เจ•เฉ€เจคเฉ‡ เจ•เฉ‹เจก เจฒเจˆ master, เจนเฉ‡เจ  เจฒเจฟเจ–เฉ€เจ†เจ‚ เจ•เจพเจฐเจตเจพเจˆเจ†เจ‚ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจœเจพเจ‚เจฆเฉ€เจ†เจ‚ เจนเจจ:

  • เจŸเฉเจฐเฉˆเจตเจฟเจธ เจธเฉ€เจ†เจˆ 'เจคเฉ‡ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเจพ เจจเจฟเจฐเจฎเจพเจฃ เจธเจผเฉเจฐเฉ‚ เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค
  • เจธเจพเจฐเฉ‡ เจฏเฉ‚เจจเจฟเจŸ, เจเจ•เฉ€เจ•เจฐเจฃ เจ…เจคเฉ‡ เจ…เฉฐเจค-เจคเฉ‹เจ‚-เจ…เฉฐเจค เจŸเฉˆเจธเจŸ เจ•เฉ€เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจเฅค

เจธเจฟเจฐเจซเจผ เจ•เฉ‹เจก เจฒเจˆ เจœเฉ‹ เจตเจฟเฉฑเจš เจ†เจ‰เจ‚เจฆเจพ เจนเฉˆ master, เจนเฉ‡เจ  เจฒเจฟเจ–เฉ‡ เจ•เฉฐเจฎ เจ•เฉ€เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ:

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

เจœเฉ‡ เจคเฉเจธเฉ€เจ‚ เจกเฉŒเจ•เจฐ, เจšเจฟเฉฑเจคเจฐเจพเจ‚ เจ…เจคเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจ‚ เจฌเจพเจฐเฉ‡ เจฌเจฟเจฒเจ•เฉเจฒ เจ•เฉเจ เจจเจนเฉ€เจ‚ เจœเจพเจฃเจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจšเจฟเฉฐเจคเจพ เจจเจพ เจ•เจฐเฉ‹เฅค เจฎเฉˆเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจธเจญ เจ•เฉเจ เจฆเฉฑเจธเจพเจ‚เจ—เจพเฅค

CI/CD เจ•เฉ€ เจนเฉˆ?

เจธเฉฐเจ–เฉ‡เจช CI/CD เจฆเจพ เจ…เจฐเจฅ เจนเฉˆ "เจจเจฟเจฐเฉฐเจคเจฐ เจเจ•เฉ€เจ•เจฐเจฃ/เจจเจฟเจฐเฉฐเจคเจฐ เจคเฉˆเจจเจพเจคเฉ€"เฅค

โ–เจฒเจ—เจพเจคเจพเจฐ เจเจ•เฉ€เจ•เจฐเจฃ

เจจเจฟเจฐเฉฐเจคเจฐ เจเจ•เฉ€เจ•เจฐเจฃ เจ‡เฉฑเจ• เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจนเฉˆ เจœเจฟเจธ เจตเจฟเฉฑเจš เจกเจฟเจตเฉˆเจฒเจชเจฐ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเฉ‡ เจฎเฉเฉฑเจ– เจธเจฐเฉ‹เจค เจ•เฉ‹เจก เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ (เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจ‡เฉฑเจ• เจธเจผเจพเจ–เจพ) เจฒเจˆ เจตเจšเจจเจฌเฉฑเจง เจ•เจฐเจฆเฉ‡ เจนเจจ master). เจ‡เจธ เจฆเฉ‡ เจจเจพเจฒ เจนเฉ€, เจ†เจŸเฉ‹เจฎเฉ‡เจŸเจฟเจก เจŸเฉˆเจธเจŸเจฟเฉฐเจ— เจฆเฉเจ†เจฐเจพ เจ•เฉ‹เจก เจฆเฉ€ เจ—เฉเจฃเจตเฉฑเจคเจพ เจจเฉ‚เฉฐ เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ‡เจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ.

โ–เจฒเจ—เจพเจคเจพเจฐ เจคเฉˆเจจเจพเจคเฉ€

เจจเจฟเจฐเฉฐเจคเจฐ เจคเฉˆเจจเจพเจคเฉ€ เจ‰เจคเจชเจพเจฆเจจ เจตเจฟเฉฑเจš เจ•เฉ‹เจก เจฆเฉ€ เจฒเจ—เจพเจคเจพเจฐ, เจธเจตเฉˆเจšเจฒเจฟเจค เจคเฉˆเจจเจพเจคเฉ€ เจนเฉˆเฅค CI/CD เจธเฉฐเจ–เฉ‡เจช เจฆเฉ‡ เจฆเฉ‚เจœเฉ‡ เจญเจพเจ— เจจเฉ‚เฉฐ เจ•เจˆ เจตเจพเจฐ "เจฒเจ—เจพเจคเจพเจฐ เจกเจฟเจฒเฉ€เจตเจฐเฉ€" เจตเจœเฉ‹เจ‚ เจธเจชเฉˆเจฒ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เจน เจ…เจธเจฒ เจตเจฟเฉฑเจš "เจจเจฟเจฐเฉฐเจคเจฐ เจคเฉˆเจจเจพเจคเฉ€" เจฆเฉ‡ เจธเจฎเจพเจจ เจนเฉˆ, เจชเจฐ "เจจเจฟเจฐเฉฐเจคเจฐ เจกเจฟเจฒเฉ€เจตเจฐเฉ€" เจฆเจพ เจ…เจฐเจฅ เจนเฉˆ เจ•เจฟ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจคเฉˆเจจเจพเจคเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจฆเฉ€ เจฆเจธเจคเฉ€ เจชเฉเจธเจผเจŸเฉ€ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค

เจธเจผเฉเจฐเฉ‚เจ†เจค

เจ‡เจน เจธเจญ เจธเจฟเฉฑเจ–เจฃ เจฒเจˆ เจฎเฉˆเจ‚ เจœเจฟเจธ เจเจช เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เฉ€เจคเฉ€, เจ‰เจธเจจเฉ‚เฉฐ เจ•เจฟเจนเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจจเฉ‹เจŸ เจ•เจฐเฉ‹. เจ‡เจน เจ‡เฉฑเจ• เจตเฉˆเฉฑเจฌ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจนเฉˆ เจœเจฟเจธ 'เจคเฉ‡ เจฎเฉˆเจ‚ เจ•เฉฐเจฎ เจ•เจฐ เจฐเจฟเจนเจพ เจนเจพเจ‚, เจจเฉ‹เจŸเจธ เจฒเฉˆเจฃ เจฒเจˆ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค เจชเจนเจฟเจฒเจพเจ‚ เจฎเฉˆเจ‚ เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เฉ€เจคเฉ€ เจœเฉˆเจฎเจธเจŸเฉˆเจ•-เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ, เจœเจพเจ‚ เจธเจฐเจตเจฐ เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚ เจธเจฟเจฐเจซเจผ เจ‡เฉฑเจ• เจซเจฐเฉฐเจŸ-เจเจ‚เจก เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ, เจฎเจฟเจ†เจฐเฉ€ เจนเฉ‹เจธเจŸเจฟเฉฐเจ— เจ…เจคเฉ‡ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจกเจฟเจชเจฒเจพเจ‡เจฎเฉˆเจ‚เจŸ เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ‚ เจฆเจพ เจฒเจพเจญ เจฒเฉˆเจฃ เจฒเจˆ เจœเฉ‹ เจ‡เจน เจชเฉ‡เจธเจผ เจ•เจฐเจฆเจพ เจนเฉˆ เจจเฉˆเฉฑเจŸเจฒเฉ€เจซเจพเจˆ. เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ€ เจ—เฉเฉฐเจเจฒเจคเจพ เจตเจงเจฆเฉ€ เจ—เจˆ, เจฎเฉˆเจจเฉ‚เฉฐ เจ‡เจธเจฆเฉ‡ เจธเจฐเจตเจฐ เจนเจฟเฉฑเจธเฉ‡ เจจเฉ‚เฉฐ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจธเฉ€, เจœเจฟเจธเจฆเจพ เจฎเจคเจฒเจฌ เจธเฉ€ เจ•เจฟ เจฎเฉˆเจจเฉ‚เฉฐ เจ†เจŸเฉ‹เจฎเฉ‡เจŸเจฟเจก เจเจ•เฉ€เจ•เจฐเจฃ เจ…เจคเฉ‡ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเฉ‡ เจ†เจŸเฉ‹เจฎเฉ‡เจŸเจฟเจก เจกเจฟเจชเจฒเจพเจ‡เจฎเฉˆเจ‚เจŸ เจฒเจˆ เจ†เจชเจฃเฉ€ เจฐเจฃเจจเฉ€เจคเฉ€ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉ‹เจเจ—เฉ€.

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

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

เจกเฉŒเจ•เจฐ

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

เจกเฉŒเจ•เจฐ เจนเฉฑเจฌ เจฒเจ—เจญเจ— เจ‰เจนเฉ€ เจšเฉ€เจœเจผ เจนเฉˆ เจœเจฟเจตเฉ‡เจ‚ GitHub 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
---

โ–เจŸเฉˆเจ—

เจ‡เฉฑเจ• เจŸเฉˆเจ— เจ‡เฉฑเจ• เจšเจฟเฉฑเจคเจฐ เจฆเฉ‡ เจ‡เฉฑเจ• เจ–เจพเจธ เจธเฉฐเจธเจ•เจฐเจฃ เจฆเจพ เจธเฉฐเจ•เฉ‡เจค เจนเฉˆเฅค

โ– เจกเฉŒเจ•เจฐ เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจฆเจพ เจ‡เฉฑเจ• เจคเฉ‡เจœเจผ เจนเจตเจพเจฒเจพ

เจ‡เฉฑเจฅเฉ‡ เจ•เฉเจ เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจตเจฐเจคเฉ€เจ†เจ‚ เจœเจพเจ‚เจฆเฉ€เจ†เจ‚ เจกเฉŒเจ•เจฐ เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจฆเฉ€ เจธเฉฐเจ–เฉ‡เจช เจœเจพเจฃเจ•เจพเจฐเฉ€ เจนเฉˆเฅค

เจฆเฉ€ เจŸเฉ€เจฎ

เจชเฉเจฐเจธเฉฐเจ—

เจชเฉเจฐเจญเจพเจต

เจกเฉŒเจ•เจฐ เจฌเจฟเจฒเจก

เจšเจฟเฉฑเจคเจฐ

เจ‡เฉฑเจ• เจกเฉŒเจ•เจฐเจซเจพเจˆเจฒ เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจšเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจ‰เจฃเจพ

เจกเฉŒเจ•เจฐ เจŸเฉˆเจ—

เจšเจฟเฉฑเจคเจฐ

เจšเจฟเฉฑเจคเจฐ เจŸเฉˆเจ—เจฟเฉฐเจ—

เจกเฉŒเจ•เจฐ เจšเจฟเฉฑเจคเจฐ

เจšเจฟเฉฑเจคเจฐ

เจธเฉ‚เจšเฉ€เจฌเฉฑเจง เจšเจฟเฉฑเจคเจฐ

เจกเฉŒเจ•เจฐ เจฐเจจ

เจ•เฉฐเจŸเฉ‡เจจเจฐ

เจ‡เฉฑเจ• เจšเจฟเฉฑเจคเจฐ เจฆเฉ‡ เจ…เจงเจพเจฐ เจคเฉ‡ เจ‡เฉฑเจ• เจ•เฉฐเจŸเฉ‡เจจเจฐ เจšเจฒเจพเจ‰เจฃเจพ

เจกเฉŒเจ•เจฐ เจงเฉฑเจ•เจพ

เจšเจฟเฉฑเจคเจฐ

เจฐเจœเจฟเจธเจŸเจฐเฉ€ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจšเจฟเฉฑเจคเจฐ เจ…เฉฑเจชเจฒเฉ‹เจก เจ•เจฐเจจเจพ

เจกเฉŒเจ•เจฐ เจ–เจฟเฉฑเจšเฉ‹

เจšเจฟเฉฑเจคเจฐ

เจฐเจœเจฟเจธเจŸเจฐเฉ€ เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจšเจฟเฉฑเจคเจฐ เจฒเฉ‹เจก เจ•เฉ€เจคเจพ เจœเจพ เจฐเจฟเจนเจพ เจนเฉˆ

เจกเฉŒเจ•เจฐ เจชเฉ€.เจเฉฑเจธ

เจ•เฉฐเจŸเฉ‡เจจเจฐ

เจธเฉ‚เจšเฉ€เจ•เจฐเจจ เจ•เฉฐเจŸเฉ‡เจจเจฐ

เจกเฉŒเจ•เจฐ เจธเจฟเจธเจŸเจฎ เจชเจฐเฉ‚เจจ

เจšเจฟเฉฑเจคเจฐ/เจ•เฉฐเจŸเฉ‡เจจเจฐ

เจจเจพ เจตเจฐเจคเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจ‚ เจ…เจคเฉ‡ เจšเจฟเฉฑเจคเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจนเจŸเจพเจ‰เจฃเจพ

โ–เจกเฉŒเจ•เจฐเจซเจพเจˆเจฒ

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

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

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

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

เจชเจฐ เจ‡เจธ เจตเจฟเฉฑเจš เจœเฉ‹ เจ•เฉเจ เจธเจผเจพเจฎเจฒ เจนเฉˆ, เจ‰เจน เจตเจฟเจธเจผเฉ‡เจธเจผ เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ, เจ•เฉฐเจฎ เจ•เจฐเจจ เจตเจพเจฒเฉ‡ เจตเจพเจคเจพเจตเจฐเจฃ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจฆเฉ‡ เจธเจฎเจพเจจ เจนเฉ€ เจตเจฐเจฃเจจ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจ‡เฉฑเจฅเฉ‡ เจ‡เจนเจจเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ•เฉเจ เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจนเจจ:

  • เจคเฉ‹เจ‚ โ€” เจ‡เจน เจ•เจฎเจพเจ‚เจก เจ‡เฉฑเจ• เจซเจพเจˆเจฒ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค เจ‡เจน เจ…เจงเจพเจฐ เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ เจœเจฟเจธ 'เจคเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆเฅค
  • เจ•เจพเจชเฉ€ เจ•เจฐเฉ‹ - เจ‡เฉฑเจ• เจธเจฅเจพเจจเจ• เจธเจฐเฉ‹เจค เจคเฉ‹เจ‚ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจตเจฟเฉฑเจš เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ€ เจจเจ•เจฒ เจ•เจฐเจจเจพเฅค
  • เจตเจฐเจ•เจกเจพเจ‡เจฐ โ€” เจนเฉ‡เจ  เจฒเจฟเจ–เฉ€เจ†เจ‚ เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจฒเจˆ เจตเจฐเจ•เจฟเฉฐเจ— เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจธเฉˆเฉฑเจŸ เจ•เจฐเจจเจพเฅค
  • เจฐเจจ - เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจšเจฒเจพเจ“เฅค
  • เจเจ•เจธเจชเฉ‹เจœเจผ เจ•เจฐเฉ‹ - เจชเฉ‹เจฐเจŸ เจธเฉˆเจŸเจฟเฉฐเจ—.
  • ENTRYPOINT - เจšเจฒเจพเจ‰เจฃ เจฒเจˆ เจ•เจฎเจพเจ‚เจก เจฆเจพ เจธเฉฐเจ•เฉ‡เจคเฅค

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 เจŸเฉ‚เจฒ เจธเจฅเจพเจชเจค เจ•เจฐเจจเจพเฅค
  • เจชเฉเจฐเฉ‹เจกเจ•เจธเจผเจจ เจธเจฐเจตเจฐ เจธเฉˆเจŸ เจ…เจช เจ•เจฐเจจเจพ เจคเจพเจ‚ เจœเฉ‹ เจ‡เจน เจธเจพเจกเฉ‡ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ…เจคเฉ‡ เจšเจฒเจพ เจธเจ•เฉ‡เฅค

เจธเจพเจกเฉ‡ เจ•เฉ‡เจธ เจตเจฟเฉฑเจš, เจ…เจธเฉ€เจ‚ เจตเจฐเจคเจฆเฉ‡ เจนเจพเจ‚ เจŸเฉเจฐเฉˆเจตเจฟเจธ เจธเฉ€.เจ†เจˆ.. เจ‡เฉฑเจ• เจธเจฐเจตเจฐ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš - DitigalOcean.

เจ‡เจน เจจเฉ‹เจŸ เจ•เฉ€เจคเจพ เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ เจ•เจฟ เจ‡เฉฑเจฅเฉ‡ เจคเฉเจธเฉ€เจ‚ เจธเฉ‡เจตเจพเจตเจพเจ‚ เจฆเฉ‡ เจ‡เฉฑเจ• เจนเฉ‹เจฐ เจธเฉเจฎเฉ‡เจฒ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹. เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจŸเฉเจฐเฉˆเจตเจฟเจธ เจธเฉ€เจ†เจˆ เจฆเฉ€ เจฌเจœเจพเจ, เจคเฉเจธเฉ€เจ‚ เจธเจฐเจ•เจฒเจธเฉ€เจ†เจˆ เจœเจพเจ‚ เจ—เจฟเจฅเจฌ เจเจ•เจธเจผเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจ…เจคเฉ‡ DigitalOcean - AWS เจœเจพเจ‚ Linode เจฆเฉ€ เจฌเจœเจพเจ.

เจ…เจธเฉ€เจ‚ Travis CI เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจฎเฉ‡เจฐเฉ‡ เจ•เฉ‹เจฒ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจ‡เจธ เจธเฉ‡เจตเจพ เจตเจฟเฉฑเจš เจ•เฉเจ เจธเฉฐเจฐเจšเจฟเจค เจนเฉˆเฅค เจ‡เจธ เจฒเจˆ, เจนเฉเจฃ เจฎเฉˆเจ‚ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจธเฉฐเจ–เฉ‡เจช เจตเจฟเฉฑเจš เจ—เฉฑเจฒ เจ•เจฐเจพเจ‚เจ—เจพ เจ•เจฟ เจ‡เจธเจจเฉ‚เฉฐ เจ•เฉฐเจฎ เจฒเจˆ เจ•เจฟเจตเฉ‡เจ‚ เจคเจฟเจ†เจฐ เจ•เจฐเจจเจพ เจนเฉˆ.

เจŸเฉเจฐเฉˆเจตเจฟเจธ เจธเฉ€.เจ†เจˆ.

เจŸเฉเจฐเฉˆเจตเจฟเจธ เจธเฉ€เจ†เจˆ เจ•เฉ‹เจก เจฆเฉ€ เจœเจพเจ‚เจš เจ…เจคเฉ‡ เจคเฉˆเจจเจพเจค เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจธเจพเจงเจจ เจนเฉˆเฅค เจฎเฉˆเจ‚ เจŸเฉเจฐเฉˆเจตเจฟเจธ เจธเฉ€เจ†เจˆ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจฆเฉ€เจ†เจ‚ เจชเฉ‡เจšเฉ€เจฆเจ—เฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจจเจนเฉ€เจ‚ เจœเจพเจฃเจพ เจšเจพเจนเจพเจ‚เจ—เจพ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจนเจฐเฉ‡เจ• เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจตเจฟเจฒเฉฑเจ–เจฃ เจนเฉˆ, เจ…เจคเฉ‡ เจ‡เจธ เจจเจพเจฒ เจฌเจนเฉเจค เจœเจผเจฟเจ†เจฆเจพ เจฒเจพเจญ เจจเจนเฉ€เจ‚ เจนเฉ‹เจตเฉ‡เจ—เจพเฅค เจชเจฐ เจœเฉ‡ เจคเฉเจธเฉ€เจ‚ เจŸเฉเจฐเฉˆเจตเจฟเจธ เจธเฉ€เจ†เจˆ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เจฐเจฆเฉ‡ เจนเฉ‹ เจคเจพเจ‚ เจฎเฉˆเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจธเจผเฉเจฐเฉ‚เจ†เจค เจ•เจฐเจจ เจฒเจˆ เจฎเฉ‚เจฒ เจ—เฉฑเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจตเจฐ เจ•เจฐเจพเจ‚เจ—เจพเฅค เจญเจพเจตเฉ‡เจ‚ เจคเฉเจธเฉ€เจ‚ Travis CI, CircleCI, Jenkins, เจœเจพเจ‚ เจ•เฉเจ เจนเฉ‹เจฐ เจšเฉเจฃเจฆเฉ‡ เจนเฉ‹, เจธเจฎเจพเจจ เจธเฉฐเจฐเจšเจจเจพ เจตเจฟเจงเฉ€เจ†เจ‚ เจนเจฐ เจฅเจพเจ‚ เจตเจฐเจคเฉ€เจ†เจ‚ เจœเจพเจฃเจ—เฉ€เจ†เจ‚เฅค

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

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

โ–เจจเฉŒเจ•เจฐเฉ€ เจœเฉ€เจตเจจ เจšเฉฑเจ•เจฐ

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

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

เจ‡เจธ เจฒเจˆ เจ‡เฉฑเจฅเฉ‡ เจซเจพเจˆเจฒ เจฆเฉ€ เจธเจฎเฉฑเจ—เจฐเฉ€ เจนเฉˆ .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 เจ•เฉเจจเฉˆเจ•เจธเจผเจจ เจธเจฅเจพเจชเจจเจพ เจจเจพเจฒ เจฎเฉเจธเจผเจ•เจฒ เจธเฉ€เฅค เจชเจฐ เจ–เฉเจธเจผเจ•เจฟเจธเจฎเจคเฉ€ เจจเจพเจฒ เจฎเฉ‡เจฐเจพ เจฌเฉเจ†เจเจซเฉเจฐเฉˆเจ‚เจก เจฌเฉˆเจธเจผ เจจเจพเจฒ เจฌเจนเฉเจค เจตเจงเฉ€เจ† เจนเฉˆ, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจนเฉ‹เจฐ เจฌเจนเฉเจค เจธเจพเจฐเฉ€เจ†เจ‚ เจšเฉ€เจœเจผเจพเจ‚ เจจเจพเจฒ. เจ‰เจธเจจเฉ‡ เจฎเฉ‡เจฐเฉ€ เจ‡เจน เจธเจ•เฉเจฐเจฟเจชเจŸ เจฒเจฟเจ–เจฃ เจตเจฟเฉฑเจš เจฎเจฆเจฆ เจ•เฉ€เจคเฉ€เฅค

เจ‡เจธ เจฒเจˆ, เจธเจ•เฉเจฐเจฟเจชเจŸ เจฆเจพ เจชเจนเจฟเจฒเจพ เจนเจฟเฉฑเจธเจพ เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจกเฉŒเจ•เจฐ เจนเฉฑเจฌ 'เจคเฉ‡ เจ…เจชเจฒเฉ‹เจก เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆ. เจ‡เจน เจ•เจฐเจจเจพ เจ•เจพเจซเจผเฉ€ เจ†เจธเจพเจจ เจนเฉˆเฅค เจฎเฉˆเจ‚ เจตเจฐเจคเฉ€ เจ—เจˆ เจŸเฉˆเจ—เจฟเฉฐเจ— เจธเจ•เฉ€เจฎ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจ—เจฟเฉฑเจŸ เจนเฉˆเจธเจผ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจ—เจฟเฉฑเจŸ เจŸเฉˆเจ— เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจจเจพ เจธเจผเจพเจฎเจฒ เจนเฉˆ, เจœเฉ‡เจ•เจฐ เจ•เฉ‹เจˆ เจฎเฉŒเจœเฉ‚เจฆ เจนเฉˆเฅค เจ‡เจน เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ เจ•เจฟ เจŸเฉˆเจ— เจตเจฟเจฒเฉฑเจ–เจฃ เจนเฉˆ เจ…เจคเฉ‡ เจ…เจธเฉˆเจ‚เจฌเจฒเฉ€ เจฆเฉ€ เจชเจ›เจพเจฃ เจ•เจฐเจจเจพ เจ†เจธเจพเจจ เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ เจœเจฟเจธ 'เจคเฉ‡ เจ‡เจน เจ…เจงเจพเจฐเจค เจนเฉˆเฅค 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

เจงเจฟเจ†เจจ เจฆเฉ‡เจฃ เจฒเจˆ เจ•เฉเจ เจ—เฉฑเจฒเจพเจ‚

เจ‡เจน เจธเฉฐเจญเจต เจนเฉˆ เจ•เจฟ เจœเจฆเฉ‹เจ‚ เจคเฉเจธเฉ€เจ‚ เจŸเฉเจฐเฉˆเจตเจฟเจธ CI เจคเฉ‹เจ‚ SSH เจฐเจพเจนเฉ€เจ‚ เจธเจฐเจตเจฐ เจจเจพเจฒ เจ•เจจเฉˆเจ•เจŸ เจ•เจฐเจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจ• เจšเฉ‡เจคเจพเจตเจจเฉ€ เจตเฉ‡เจ–เฉ‹เจ—เฉ‡ เจœเฉ‹ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฐเจธเจŸเจพเจฒเฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจœเจพเจฐเฉ€ เจฐเฉฑเจ–เจฃ เจคเฉ‹เจ‚ เจฐเฉ‹เจ•เฉ‡เจ—เฉ€ เจ•เจฟเจ‰เจ‚เจ•เจฟ เจธเจฟเจธเจŸเจฎ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจฆเฉ‡ เจœเจตเจพเจฌ เจฆเฉ€ เจ‰เจกเฉ€เจ• เจ•เจฐเฉ‡เจ—เจพเฅค

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

เจ…เจคเฉ‡ เจ‡เจน เจ‰เจน เจนเฉˆ เจœเฉ‹ เจ‡เจน เจชเฉˆเจฆเจพ เจ•เจฐเจฆเจพ เจนเฉˆ - เจ‡เฉฑเจ• เจฌเฉ‡เจธ 64 เจเจจเจ•เฉ‹เจกเจก เจธเจคเจฐ:

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 SSH เจฒเจˆเฅค เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚, เจ‡เจนเจจเจพเจ‚ เจฆเฉ‹เจจเจพเจ‚ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจชเฉ‹เจฐเจŸ 'เจคเฉ‡ เจธเจฐเจตเจฐ เจจเฉ‚เฉฐ เจธเจฟเฉฑเจงเจพ เจเจ•เจธเฉˆเจธ เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ…เจธเจซเจฒ เจนเฉ‹ เจœเจพเจตเฉ‡เจ—เฉ€เฅค

เจจเจคเฉ€เจœเฉ‡

เจฎเฉ‡เจฐเฉ‡ เจฆเฉเจ†เจฐเจพ เจ‡เจธ เจธเจฎเฉฑเจ—เจฐเฉ€ เจตเจฟเฉฑเจš เจธเจญ เจ•เฉเจ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจจเจพ เจคเจพเจ‚ เจกเฉŒเจ•เจฐ เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎ เจ…เจคเฉ‡ เจจเจพ เจนเฉ€ เจธเจตเฉˆเจšเจฒเจฟเจค CI/CD เจšเฉ‡เจจเจพเจ‚ เจฆเฉ€เจ†เจ‚ เจงเจพเจฐเจจเจพเจตเจพเจ‚ เจจเฉ‡ เจฎเฉˆเจจเฉ‚เฉฐ เจนเฉเจฃ เจกเจฐเจพเจ‡เจ†เฅค เจฎเฉˆเจ‚ เจ‡เฉฑเจ• เจจเจฟเจฐเฉฐเจคเจฐ เจเจ•เฉ€เจ•เจฐเจฃ เจšเฉ‡เจจ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจฆเฉ‡ เจฏเฉ‹เจ— เจธเฉ€, เจœเจฟเจธ เจฆเฉŒเจฐเจพเจจ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจ‰เจคเจชเจพเจฆเจจ เจตเจฟเฉฑเจš เจœเจพเจฃ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจŸเฉˆเจธเจŸ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจธเจฐเจตเจฐ 'เจคเฉ‡ เจ†เจชเจฃเฉ‡ เจ†เจช เจคเฉˆเจจเจพเจค เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เจน เจธเจญ เจฎเฉ‡เจฐเฉ‡ เจฒเจˆ เจ…เจœเฉ‡ เจตเฉ€ เจฎเฉเจ•เจพเจฌเจฒเจคเจจ เจจเจตเจพเจ‚ เจนเฉˆ, เจ…เจคเฉ‡ เจฎเฉˆเจจเฉ‚เฉฐ เจฏเจ•เฉ€เจจ เจนเฉˆ เจ•เจฟ เจฎเฉ‡เจฐเฉ‡ เจธเจตเฉˆเจšเจฒเจฟเจค เจตเจฐเจ•เจซเจฒเฉ‹ เจจเฉ‚เฉฐ เจฌเจฟเจนเจคเจฐ เจฌเจฃเจพเจ‰เจฃ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจนเฉ‹เจฐ เจ•เฉเจธเจผเจฒ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ‡ เจคเจฐเฉ€เจ•เฉ‡ เจนเจจเฅค เจ‡เจธ เจฒเจˆ เจœเฉ‡เจ•เจฐ เจคเฉเจนเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ‡เจธ เจฎเจพเจฎเจฒเฉ‡ 'เจคเฉ‡ เจ•เฉ‹เจˆ เจตเจฟเจšเจพเจฐ เจนเจจ, เจคเจพเจ‚ เจ•เจฟเจฐเจชเจพ เจ•เจฐเจ•เฉ‡ เจฎเฉˆเจจเฉ‚เฉฐ เจฆเฉฑเจธเฉ‹เฅค เจฎเฉ‡เจฐเฉ‡ เจฒเจˆ เจชเจคเจพ เจนเฉˆเฅค เจฎเฉˆเจจเฉ‚เฉฐ เจ‰เจฎเฉ€เจฆ เจนเฉˆ เจ•เจฟ เจ‡เจธ เจฒเฉ‡เจ– เจจเฉ‡ เจคเฉเจนเจพเจกเฉ‡ เจฏเจคเจจเจพเจ‚ เจตเจฟเฉฑเจš เจคเฉเจนเจพเจกเฉ€ เจฎเจฆเจฆ เจ•เฉ€เจคเฉ€ เจนเฉˆ. เจฎเฉˆเจ‚ เจตเจฟเจธเจผเจตเจพเจธ เจ•เจฐเจจเจพ เจšเจพเจนเฉเฉฐเจฆเจพ เจนเจพเจ‚ เจ•เจฟ เจ‡เจธ เจจเฉ‚เฉฐ เจชเฉœเฉเจนเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจคเฉเจธเฉ€เจ‚ เจ‰เจจเจพ เจนเฉ€ เจธเจฟเฉฑเจ–เจฟเจ† เจœเจฟเฉฐเจจเจพ เจฎเฉˆเจ‚ เจธเจฟเฉฑเจ–เจฟเจ† เจนเฉˆ เจœเจฆเฉ‹เจ‚ เจฎเฉˆเจ‚ เจ‡เจธ เจตเจฟเฉฑเจš เจ—เฉฑเจฒ เจ•เฉ€เจคเฉ€ เจนเฉˆ, เจธเจญ เจ•เฉเจ เจธเจฎเจเจฆเฉ‡ เจนเฉ‹เจ.

PS เจธเจพเจกเฉ‡ เจตเจฟเฉฑเจš เจฌเจพเจœเจผเจพเจฐ เจ‡เฉฑเจ• เจšเจฟเฉฑเจคเจฐ เจนเฉˆ เจกเฉŒเจ•เจฐ, เจœเจฟเจธ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจ•เจฒเจฟเฉฑเจ• เจตเจฟเฉฑเจš เจ‡เฉฐเจธเจŸเจพเจฒ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจคเฉเจธเฉ€เจ‚ 'เจคเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐเจพเจ‚ เจฆเฉ‡ เจธเฉฐเจšเจพเจฒเจจ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ VPS. เจธเจพเจฐเฉ‡ เจจเจตเฉ‡เจ‚ เจ—เจพเจนเจ•เจพเจ‚ เจจเฉ‚เฉฐ 3 เจฆเจฟเจจเจพเจ‚ เจฆเฉ€ เจœเจพเจ‚เจš เจฎเฉเจซเจผเจค เจฆเจฟเฉฑเจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค

เจชเจฟเจ†เจฐเฉ‡ เจชเจพเจ เจ•! เจ•เฉ€ เจคเฉเจธเฉ€เจ‚ เจ†เจชเจฃเฉ‡ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸเจพเจ‚ เจตเจฟเฉฑเจš CI/CD เจคเจ•เจจเฉ€เจ•เจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹?

เจ‡เฉฑเจ• เจธเฉ€เจ†เจˆ/เจธเฉ€เจกเฉ€ เจšเฉ‡เจจ เจฌเจฃเจพเจ‰เจฃเจพ เจ…เจคเฉ‡ เจกเฉŒเจ•เจฐ เจจเจพเจฒ เจ†เจŸเฉ‹เจฎเฉˆเจŸเจฟเจ• เจ•เฉฐเจฎ เจ•เจฐเจจเจพ

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹