เชฎเซเช เชฎเชพเชฐเซ เชชเซเชฐเชฅเชฎ เชตเซเชฌเชธเชพเชเชเซเชธ 90 เชจเชพ เชฆเชพเชฏเชเชพเชจเชพ เช
เชเชคเชฎเชพเช เชฒเชเซ เชนเชคเซ. เชคเซ เชธเชฎเชฏเซ เชคเซเชฎเชจเซ เชเชพเชฐเซเชฏเชเชพเชฐเซ เชเซเชฐเชฎเชฎเชพเช เชฎเซเชเชตเซเช เชเซเชฌ เช เชธเชฐเชณ เชนเชคเซเช. เชเซเชเชฒเชพเช เชถเซเชฐ เชเชฐเซเชฒ เชนเซเชธเซเชเชฟเชเช เชชเชฐ เช
เชชเชพเชเซ เชธเชฐเซเชตเชฐ เชนเชคเซเช, เชคเชฎเซ FTP เชฆเซเชตเชพเชฐเชพ เช เชธเชฐเซเชตเชฐ เชชเชฐ เชเชเชเช เชฒเชเซเชจเซ เชฒเซเช เชเชจ เชเชฐเซ เชถเชเซ เชเซ ftp://ftp.example.com
. เชชเชเซ เชคเชฎเชพเชฐเซ เชคเชฎเชพเชฐเซเช เชจเชพเชฎ เช
เชจเซ เชชเชพเชธเชตเชฐเซเชก เชฆเชพเชเชฒ เชเชฐเชตเซ เชชเชกเชถเซ เช
เชจเซ เชซเชพเชเชฒเซเชจเซ เชธเชฐเซเชตเชฐ เชชเชฐ เช
เชชเชฒเซเชก เชเชฐเชตเซ เชชเชกเชถเซ. เชคเซเชฏเชพเช เชเซเชฆเชพ เชเซเชฆเชพ เชธเชฎเชฏ เชนเชคเชพ, เชฌเชงเซเช เชนเชตเซ เชเชฐเชคเชพเช เชคเซ เชธเชฎเชฏเซ เชธเชฐเชณ เชนเชคเซเช.
เชคเซเชฏเชพเชฐเชชเชเซเชจเชพ เชฌเซ เชฆเชพเชฏเชเชพเชฎเชพเช เชฌเชงเซเช เชเชฃเซเช เชฌเชฆเชฒเชพเช เชเชฏเซเช เชเซ. เชตเซเชฌเชธเชพเชเช เชตเชงเซ เชเชเชฟเชฒ เชฌเชจเซ เชเช เชเซ; เชชเซเชฐเซเชกเชเซเชถเชจเชฎเชพเช เชฐเซเชฒเซเช เชฅเชคเชพ เชชเชนเซเชฒเชพ เชคเซเชจเซ เชเชธเซเชฎเซเชฌเชฒ เชเชฐเชตเซ เชเซเชเช. เชเช เช เชธเชฐเซเชตเชฐ เชฒเซเชก เชฌเซเชฒเซเชจเซเชธเชฐ เชชเชพเชเชณ เชเชพเชฒเชคเชพ เชเชฃเชพ เชธเชฐเซเชตเชฐ เชฌเชจเซ เชเชฏเซเช เช เชจเซ เชตเชฐเซเชเชจ เชเชเชเซเชฐเซเชฒ เชธเชฟเชธเซเชเชฎเชจเซ เชเชชเชฏเซเช เชธเชพเชฎเชพเชจเซเชฏ เชฌเชจเซ เชเชฏเซ.
เชฎเชพเชฐเชพ เช
เชเชเชค เชชเซเชฐเซเชเซเชเซเช เชฎเชพเชเซ เชฎเชพเชฐเซ เชชเชพเชธเซ เชเชพเชธ เชเซเช เชตเชฃเซ เชนเชคเซ. เช
เชจเซ เชนเซเช เชเชพเชฃเชคเซ เชนเชคเซ เชเซ เชฎเชพเชฐเซ เชฎเชพเชคเซเชฐ เชเช เชเซเชฐเชฟเชฏเชพ เชเชฐเซเชจเซ เชธเชพเชเชเชจเซ เชชเซเชฐเซเชกเชเซเชถเชจเชฎเชพเช เชเชฎเชพเชตเชตเชพเชจเซ เชเซเชทเชฎเชคเชพเชจเซ เชเชฐเซเชฐ เชเซ: เชถเชพเชเชพเชฎเชพเช เชเซเชก เชฒเชเชตเชพ master
GitHub เชชเชฐ. เชตเชงเซเชฎเชพเช, เชนเซเช เชเชพเชฃเชคเซ เชนเชคเซ เชเซ เชฎเชพเชฐเซ เชจเชพเชจเซ เชตเซเชฌ เชเชชเซเชฒเชฟเชเซเชถเชจเชจเชพ เชธเชเชเชพเชฒเชจเชจเซ เชธเซเชจเชฟเชถเซเชเชฟเชค เชเชฐเชตเชพ เชฎเชพเชเซ, เชนเซเช เชตเชฟเชถเชพเชณ เชเซเชฌเชฐเชจเซเชเซเชธ เชเซเชฒเชธเซเชเชฐเชจเซเช เชธเชเชเชพเชฒเชจ เชเชฐเชตเชพ, เช
เชฅเชตเชพ เชกเซเชเชฐ เชธเซเชตเซเชฐเซเชฎ เชเซเชเซเชจเซเชฒเซเชเซเชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพ, เช
เชฅเชตเชพ เชชเซเชกเซเชธ, เชเชเชจเซเชเซ เช
เชจเซ เช
เชจเซเชฏ เชคเชฎเชพเชฎ เชชเซเชฐเชเชพเชฐเชจเชพ เชธเชฐเซเชตเชฐเซเชธเชจเซ เชเชพเชซเชฒเซ เชเชพเชณเชตเชตเชพ เชฎเชพเชเชเชคเซ เชจเชฅเซ. เชเชเชฟเชฒเชคเชพเช เชเชพเชฐเซเชฏเชจเซ เชถเชเซเชฏ เชคเซเชเชฒเซเช เชธเชฐเชณ เชฌเชจเชพเชตเชตเชพเชจเซเช เชฒเชเซเชทเซเชฏ เชนเชพเชเชธเชฒ เชเชฐเชตเชพ เชฎเชพเชเซ, เชฎเชพเชฐเซ CI/CD เชธเชพเชฅเซ เชชเชฐเชฟเชเชฟเชค เชฅเชตเซเช เชเชฐเซเชฐเซ เชนเชคเซเช.
เชเซ เชคเชฎเชพเชฐเซ เชชเชพเชธเซ เชเช เชจเชพเชจเซ เชชเซเชฐเซเชเซเชเซเช เชเซ (เช เชเชฟเชธเซเชธเชพเชฎเชพเช, เชเช Node.js เชชเซเชฐเซเชเซเชเซเช) เช
เชจเซ เชคเชฎเซ เช เชชเซเชฐเซเชเซเชเซเชเชจเชพ เชเชฎเชพเชตเชเชจเซ เชเซเชตเซ เชฐเซเชคเซ เชธเซเชตเชเชพเชฒเชฟเชค เชเชฐเชตเซเช เชคเซ เชเชพเชฃเชตเชพ เชฎเชพเชเซ เชเซ, เชเซเชฏเชพเชฐเซ เชคเชฎเซ เชเชพเชคเชฐเซ เชเชฐเซ เชเซ เชฐเชฟเชชเซเชเซเชเชฐเซเชฎเชพเช เชเซ เชธเชเชเซเชฐเชนเชฟเชค เชเซ เชคเซ เชเชคเซเชชเชพเชฆเชจเชฎเชพเช เชเซ เชเชพเชฐเซเชฏ เชเชฐเซ เชเซ เชคเซเชจเชพเชฅเซ เชฌเชฐเชพเชฌเชฐ เชฎเซเชณ เชเชพเชฏ เชเซ, เชคเซ เชนเซเช เชฒเชพเชเซ เชเซ เชเซ เชคเชฎเชจเซ เช เชฒเซเชเชฎเชพเช เชฐเชธ เชนเซเช เชถเชเซ เชเซ.
เชชเซเชฐเซเชตเชเชฐเซเชฐเซเชฏเชพเชคเซ
เช เชฒเซเชเชจเชพ เชตเชพเชเชเชจเซ เชเชฆเซเชถ เชตเชพเชเซเชฏ เช
เชจเซ เชฌเซเชถ เชธเซเชเซเชฐเชฟเชชเซเชเซ เชฒเชเชตเชพเชจเซ เชฎเซเชณเชญเซเชค เชธเชฎเช เชนเซเชฏ โโเชคเซเชตเซ เช
เชชเซเชเซเชทเชพ เชเซ. เชตเชงเซเชฎเชพเช, เชคเซเชจเซ เชเชเชพเชเชจเซเชเซเชธเชจเซ เชเชฐเซเชฐ เชชเชกเชถเซ
เชเชฆเซเชฆเซเชถเซ
เชนเซเช เชเชฎ เชจเชนเซเช เชเชนเซเช เชเซ เช เชฒเซเชเชจเซ เชฌเชฟเชจเชถเชฐเชคเซ "เชเซเชฏเซเชเซเชฐเซเชฏเชฒ" เชเชนเซ เชถเชเชพเชฏ. เช เชเช เชตเชงเซ เชฆเชธเซเชคเชพเชตเซเช เชเซ เชเซเชฎเชพเช เชนเซเช เชเซ เชถเซเชเซเชฏเซ เชเซเช เชคเซเชจเชพ เชตเชฟเชถเซ เชตเชพเชค เชเชฐเซเช เชเซเช เช เชจเซ เชเช เชธเซเชตเชฏเชเชธเชเชเชพเชฒเชฟเชค เชชเชพเชธเชฎเชพเช เชเชฐเชตเชพเชฎเชพเช เชเชตเซเชฒ เชเซเชกเชจเชพ เชชเชฐเซเชเซเชทเชฃ เช เชจเซ เช เชฎเชฒเซเชเชฐเชฃ เชฎเชพเชเซ เชฎเชจเซ เช เชจเซเชเซเชณ เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชจเซเช เชตเชฐเซเชฃเชจ เชเชฐเซเช เชเซเช.
เช เช เชฎเชพเชฐเชพ เชตเชฐเซเชเชซเซเชฒเซเชจเซ เช เชเชค เชเชตเซเชฏเซ.
เชธเชฟเชตเชพเชฏ เชเซเชเชชเชฃ เชฐเซเชชเซเชเซเชเชฐเซ เชถเชพเชเชพเชฎเชพเช เชชเซเชธเซเช เชเชฐเชพเชฏเซเชฒ เชเซเชก เชฎเชพเชเซ master
, เชจเซเชเซเชจเซ เชเซเชฐเชฟเชฏเชพเช เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ:
- เชเซเชฐเซเชตเชฟเชธ เชธเซเชเช เชชเชฐ เชชเซเชฐเซเชเซเชเซเช เชฌเชฟเชฒเซเชก เชถเชฐเซ เชฅเชพเชฏ เชเซ.
- เชคเชฎเชพเชฎ เชเชเชฎ, เชเชเซเชเชฐเชฃ เช เชจเซ เชเชจเซเชก-เชเซ-เชเชจเซเชก เชเซเชธเซเช เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ.
เชฎเชพเชคเซเชฐ เชเซเชก เชฎเชพเชเซ เชเซ เชเซ เชฎเชพเช เชเชตเซ เชเซ master
, เชจเซเชเซ เชฎเซเชเชฌ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ:
- เชเชชเชฐ เชเชฃเชพเชตเซเชฒ เชฆเชฐเซเช เชตเชธเซเชคเซ เชเชชเชฐเชพเชเชค...
- เชตเชฐเซเชคเชฎเชพเชจ เชเซเชก, เชธเซเชเชฟเชเชเซเชธ เช เชจเซ เชชเชฐเซเชฏเชพเชตเชฐเชฃเชจเชพ เชเชงเชพเชฐเซ เชกเซเชเชฐ เชเชฎเซเช เชฌเชจเชพเชตเชตเซ.
- เชเชฌเซเชจเซ เชกเซเชเชฐ เชนเชฌ เชชเชฐ เชเชฎเชพเชตเซ เชฐเชนเซเชฏเซเช เชเซ.
- เชเชคเซเชชเชพเชฆเชจ เชธเชฐเซเชตเชฐ เชธเชพเชฅเซ เชเซเชกเชพเชฃ.
- เชกเซเชเชฐ เชนเชฌเชฅเซ เชธเชฐเซเชตเชฐ เชชเชฐ เชเช เชเชฌเซ เช เชชเชฒเซเชก เชเชฐเซ เชฐเชนเซเชฏเซเช เชเซ.
- เชตเชฐเซเชคเชฎเชพเชจ เชเชจเซเชเซเชจเชฐเชจเซ เชฐเซเชเชตเซเช เช เชจเซ เชจเชตเซ เชเชฌเซเชจเชพ เชเชงเชพเชฐเซ เชจเชตเซเช เชถเชฐเซ เชเชฐเชตเซเช.
เชเซ เชคเชฎเซ เชกเซเชเชฐ, เชเชฌเซเช เช เชจเซ เชเชจเซเชเซเชจเชฐ เชตเชฟเชถเซ เชฌเชฟเชฒเชเซเชฒ เชเชเช เชเชพเชฃเชคเชพ เชจเชฅเซ, เชคเซ เชเชฟเชเชคเชพ เชเชฐเชถเซ เชจเชนเซเช. เชนเซเช เชคเชฎเชจเซ เชคเซเชจเชพ เชตเชฟเชถเซ เชฌเชงเซเช เชเชนเซเชถ.
CI/CD เชถเซเช เชเซ?
เชธเชเชเซเชทเชฟเชชเซเชค CI/CD เชจเซ เช เชฐเซเชฅ "เชธเชคเชค เชเชเซเชเชฐเชฃ/เชธเชคเชค เชเชฎเชพเชตเช" เชเซ.
โเชธเชคเชค เชเชเซเชเชฐเชฃ
เชธเชคเชค เชเชเซเชเชฐเชฃ เช เชเชตเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชเซ เชเซเชฎเชพเช เชตเชฟเชเชพเชธเชเชฐเซเชคเชพเช เชชเซเชฐเซเชเซเชเซเชเชจเชพ เชฎเซเชเซเชฏ เชธเซเชคเซเชฐเซเชค เชเซเชก เชฐเชฟเชชเซเชเซเชเชฐเซ (เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ เชเช เชถเชพเชเชพ) เชฎเชพเชเซ เชเชฎเชฟเช เชเชฐเซ เชเซ master
). เชคเซ เช เชธเชฎเชฏเซ, เชเซเชกเชจเซ เชเซเชฃเชตเชคเซเชคเชพ เชธเซเชตเชเชพเชฒเชฟเชค เชชเชฐเซเชเซเชทเชฃ เชฆเซเชตเชพเชฐเชพ เชธเซเชจเชฟเชถเซเชเชฟเชค เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ.
โเชธเชคเชค เชเชฎเชพเชตเช
เชธเชคเชค เชเชฎเชพเชตเช เช เชเชคเซเชชเชพเชฆเชจเชฎเชพเช เชเซเชกเชจเซ เชตเชพเชฐเชเชตเชพเชฐ, เชธเซเชตเชฏเชเชธเชเชเชพเชฒเชฟเชค เชเชฎเชพเชตเช เชเซ. CI/CD เชเซเชเชเชพเชเซเชทเชฐเชจเซ เชฌเซเชเซ เชญเชพเช เชเซเชเชฒเซเชเชตเชพเชฐ "เชธเชคเชค เชตเชฟเชคเชฐเชฃ" เชคเชฐเซเชเซ เชเซเชกเชตเชพเชฎเชพเช เชเชตเซ เชเซ. เช เชฎเซเชณเชญเซเชค เชฐเซเชคเซ "เชธเชคเชค เชเชฎเชพเชตเช" เชเซเชตเซเช เช เชเซ, เชชเชฐเชเชคเซ "เชธเชคเชค เชกเชฟเชฒเชฟเชตเชฐเซ" เช เชชเซเชฐเซเชเซเชเซเช เชกเชฟเชชเซเชฒเซเชฏเชฎเซเชจเซเช เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชถเชฐเซ เชเชฐเชคเชพ เชชเชนเซเชฒเชพ เชซเซเชฐเชซเชพเชฐเซเชจเซ เชฎเซเชจเซเชฏเซเช เชฒเซ เชชเซเชทเซเชเชฟ เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐเชฟเชฏเชพเชค เชธเซเชเชตเซ เชเซ.
เชชเซเชฐเชพเชฐเชเชญ
เช เชฌเชงเซเช เชถเซเชเชตเชพ เชฎเชพเชเซ เชฎเซเช เชเซ เชเชชเชจเซ เชเชชเชฏเซเช เชเชฐเซเชฏเซ เชคเซเชจเซ เชเชนเซเชตเชพเชฏ เชเซ
เชฎเชพเชฐเชพ เชเชฟเชธเซเชธเชพเชฎเชพเช, เชเชชเซเชฒเชฟเชเซเชถเชจ เช Node.js เชชเชฐเซเชฏเชพเชตเชฐเชฃเชฎเชพเช เชเชพเชฒเชคเซเช เชเช เชเชเซเชธเชชเซเชฐเซเชธ เชธเชฐเซเชตเชฐ เชเซ, เชเซ เชธเชฟเชเชเชฒ-เชชเซเช เชฐเชฟเชเชเซเช เชเชชเซเชฒเชฟเชเซเชถเชจเชจเซ เชธเซเชตเชพ เชเชชเซ เชเซ เช
เชจเซ เชธเซเชฐเชเซเชทเชฟเชค เชธเชฐเซเชตเชฐ-เชธเชพเชเชก API เชจเซ เชธเชชเซเชฐเซเช เชเชฐเซ เชเซ. เช เชเชฐเซเชเชฟเชเซเชเซเชเชฐ เชตเซเชฏเซเชนเชฐเชเชจเชพเชจเซ เช
เชจเซเชธเชฐเซ เชเซ เชเซ เชถเซเชงเซ เชถเชเชพเชฏ เชเซ
เชธเชพเชฅเซ เชฎเซเช เชธเชฒเชพเชน เชฒเซเชงเซ
Docker
เชกเซเชเชฐ เช เชเช เชธเชพเชงเชจ เชเซ เชเซ เชเชจเซเชเซเชจเชฐเชพเชเชเซเชถเชจ เชเซเชเซเชจเซเชฒเซเชเซเชจเซ เชเชญเชพเชฐเซ เชเซ, เชเชชเซเชฒเซเชเซเชถเชจเชจเซ เชธเชฐเชณเชคเชพเชฅเซ เชตเชฟเชคเชฐเชฟเชค, เชเชฎเชพเชตเช เช
เชจเซ เชธเชฎเชพเชจ เชตเชพเชคเชพเชตเชฐเชฃเชฎเชพเช เชเชฒเชพเชตเชตเชพเชจเซ เชฎเชเชเซเชฐเซ เชเชชเซ เชเซ, เชชเชเซ เชญเชฒเซ เชกเซเชเชฐ เชชเซเชฒเซเชเชซเซเชฐเซเชฎ เชชเซเชคเซ เช
เชฒเช-เช
เชฒเช เชตเชพเชคเชพเชตเชฐเชฃเชฎเชพเช เชเชพเชฒเชคเซเช เชนเซเชฏ. เชชเซเชฐเชฅเชฎ, เชฎเชพเชฐเซ เชกเซเชเชฐ เชเชฎเชพเชจเซเชก เชฒเชพเชเชจ เชเซเชฒเซเชธ (CLI) เชชเชฐ เชฎเชพเชฐเชพ เชนเชพเชฅ เชฎเซเชณเชตเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ.
เชกเซเชเชฐ เชนเชฌ เชฒเชเชญเช เชธเชฎเชพเชจ เชตเชธเซเชคเซ เชเซ
เชคเซเชฅเซ, เชกเซเชเชฐ เชธเชพเชฅเซ เชชเซเชฐเชพเชฐเชเชญ เชเชฐเชตเชพ เชฎเชพเชเซ, เชคเชฎเชพเชฐเซ เชฌเซ เชตเชธเซเชคเซเช เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ:
- เชธเซเช เชเชฐเซ
เชกเซเชเชฐ เชกเซเชธเซเชเช .เชช . - เชฎเชพเชเซ เชจเซเชเชงเชฃเซ เชเชฐเซ
เชกเซเชเชฐ เชนเชฌ .
เช เชชเชเซ, เชคเชฎเซ เชกเซเชเชฐ เชธเชเชธเซเชเชฐเชฃเชจเซ เชคเชชเชพเชธเชตเชพ เชฎเชพเชเซ เชจเซเชเซเชจเชพ เชเชฆเซเชถเชจเซ เชเชฒเชพเชตเซเชจเซ เชกเซเชเชฐ CLI เชเชพเชฎ เชเชฐเซ เชฐเชนเซเชฏเซเช เชเซ เชเซ เชเซเชฎ เชคเซ เชคเชชเชพเชธเซ เชถเชเซ เชเซ:
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
, เชชเซเชฐเซเชเซเชเซเชเชจเซ เชฐเซเช เชกเชฟเชฐเซเชเซเชเชฐเซเชฎเชพเช เชธเซเชฅเชฟเชค เชเซ. เช เชซเชพเชเชฒ, เชถเชฐเซเชเชคเชฎเชพเช, เชคเชฆเซเชฆเชจ เช
เชเชฎเซเชฏ เชฒเชพเชเซ เชเซ.
เชชเชฐเชเชคเซ เชคเซ เชเซ เชธเชฎเชพเชตเซ เชเซ เชคเซ เชซเชเซเชค เชตเชฟเชถเชฟเชทเซเช เชเชฆเซเชถเซ เชธเชพเชฅเซ, เชเชพเชฐเซเชฏเชเชพเชฐเซ เชตเชพเชคเชพเชตเชฐเชฃเชจเซ เชธเซเช เชเชฐเชตเชพ เชเซเชตเซเช เช เชตเชฐเซเชฃเชตเซ เชเซ. เช เชนเซเช เชเชฎเชพเชเชจเชพ เชเซเชเชฒเชพเช เชเชฆเซเชถเซ เชเซ:
เชฅเซ โ เช เชเชฆเซเชถ เชซเชพเชเชฒ เชถเชฐเซ เชเชฐเซ เชเซ. เชคเซ เชฌเซเช เชเชฎเซเชเชจเซ เชธเซเชชเชทเซเช เชเชฐเซ เชเซ เชเซ เชเซเชจเชพ เชชเชฐ เชเชจเซเชเซเชจเชฐ เชฌเชพเชเชงเชตเชพเชฎเชพเช เชเชตเซเชฏเซเช เชเซ.เชเซเชชเชฟ เชเชฐเซ - เชธเซเชฅเชพเชจเชฟเช เชธเซเชคเซเชฐเซเชคเชฎเชพเชเชฅเซ เชเชจเซเชเซเชจเชฐเชฎเชพเช เชซเชพเชเชฒเซเชจเซ เชจเชเชฒ เชเชฐเชตเซ.เชตเชฐเซเชเชกเซเชฐ โ เชจเซเชเซเชจเชพ เชเชฆเซเชถเซ เชฎเชพเชเซ เชเชพเชฐเซเชฏเชเชพเชฐเซ เชจเชฟเชฐเซเชฆเซเชถเชฟเชเชพ เชธเซเชฏเซเชเชฟเชค เชเชฐเซ เชฐเชนเซเชฏเชพ เชเซเช.เชฐเชจ เชเชฐเซ - เชเชพเชฒเซ เชฐเชนเซเชฒ เชเชฆเซเชถเซ.เชเชเซเชธเชชเซเช - เชชเซเชฐเซเช เชธเซเชเชฟเชเชเซเชธ.เชชเซเชฐเชตเซเชถ เชฌเชฟเชเชฆเซ - เชเชฒเชพเชตเชตเชพ เชฎเชพเชเซเชจเชพ เชเชฆเซเชถเชจเซ เชธเชเชเซเชค.
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 เชเซเชฒ เชธเซเช เชเชฐเชตเซเช.
- เชเชคเซเชชเชพเชฆเชจ เชธเชฐเซเชตเชฐ เชธเซเชฏเซเชเชฟเชค เชเชฐเซ เชฐเชนเซเชฏเชพ เชเซเช เชเซเชฅเซ เชเชฐเซเชจเซ เชคเซ เช เชฎเชพเชฐเชพ เชเซเชกเชจเซ เชกเชพเชเชจเชฒเซเชก เช เชจเซ เชเชฒเชพเชตเซ เชถเชเซ.
เช
เชฎเชพเชฐเชพ เชเชฟเชธเซเชธเชพเชฎเชพเช, เช
เชฎเซ เชเชชเชฏเซเช เชเชฐเซเช เชเซเช
เช เชจเซเชเชงเชตเซเช เชเซเชเช เชเซ เช เชนเซเช เชคเชฎเซ เชธเซเชตเชพเชเชจเชพ เช เชจเซเชฏ เชธเชเชฏเซเชเชจเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชถเชเซ เชเซ. เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, Travis CI เชจเซ เชฌเชฆเชฒเซ, เชคเชฎเซ CircleCI เช เชฅเชตเชพ Github Actions เชจเซ เชเชชเชฏเซเช เชเชฐเซ เชถเชเซ เชเซ. เช เชจเซ เชคเซเชจเชพ เชฌเชฆเชฒเซ DigitalOcean - AWS เช เชฅเชตเชพ Linode.
เช เชฎเซ Travis CI เชธเชพเชฅเซ เชเชพเชฎ เชเชฐเชตเชพเชจเซเช เชจเชเซเชเซ เชเชฐเซเชฏเซเช เชเซ, เช เชจเซ เชฎเชพเชฐเซ เชชเชพเชธเซ เช เชธเซเชตเชพเชฎเชพเช เชชเชนเซเชฒเซเชฅเซ เช เชเชเชเช เชเซเช เชตเซเชฒเซเช เชเซ. เชคเซเชฅเซ, เชนเชตเซ เชนเซเช เชคเซเชจเซ เชเชพเชฎ เชฎเชพเชเซ เชเซเชตเซ เชฐเซเชคเซ เชคเซเชฏเชพเชฐ เชเชฐเชตเซเช เชคเซ เชตเชฟเชถเซ เชเซเชเชเชฎเชพเช เชตเชพเชค เชเชฐเซเชถ.
เชเซเชฐเซเชตเชฟเชธ เชธเซเชเช
เชเซเชฐเซเชตเชฟเชธ CI เช เชเซเชกเชจเชพ เชชเชฐเซเชเซเชทเชฃ เช เชจเซ เชเชฎเชพเชตเช เชฎเชพเชเซเชจเซเช เชเช เชธเชพเชงเชจ เชเซ. เชนเซเช เชเซเชฐเซเชตเชฟเชธ เชธเซเชเชเชจเซ เชธเซเชฅเชพเชชเชจเชพเชจเซ เชเชเชฟเชฒเชคเชพเชเชฎเชพเช เชเชตเชพ เชฎเชพเชเชเชคเซ เชจเชฅเซ, เชเชพเชฐเชฃ เชเซ เชฆเชฐเซเช เชชเซเชฐเซเชเซเชเซเช เช เชจเชจเซเชฏ เชเซ, เช เชจเซ เชเชจเชพเชฅเซ เชตเชงเซ เชซเชพเชฏเชฆเซ เชฅเชถเซ เชจเชนเซเช. เชชเชฐเชเชคเซ เชเซ เชคเชฎเซ เชเซเชฐเซเชตเชฟเชธ เชธเซเชเชเชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพเชจเซเช เชจเชเซเชเซ เชเชฐเซ เชเซ เชคเซ เชนเซเช เชคเชฎเชจเซ เชชเซเชฐเชพเชฐเชเชญ เชเชฐเชตเชพ เชฎเชพเชเซ เชฎเซเชณเชญเซเชค เชฌเชพเชฌเชคเซเชจเซ เชเชตเชฐเซ เชฒเชเชถ. เชญเชฒเซ เชคเชฎเซ Travis CI, CircleCI, Jenkins เช เชฅเชตเชพ เชฌเซเชเซเช เชเชเชเช เชชเชธเชเชฆ เชเชฐเซ, เชธเชฎเชพเชจ เชฐเซเชชเชฐเซเชเชพเชเชเชจ เชชเชฆเซเชงเชคเชฟเช เชฆเชฐเซเช เชเชเซเชฏเชพเช เชเชชเชฏเซเชเชฎเชพเช เชฒเซเชตเชพเชถเซ.
เชเซเชฐเซเชตเชฟเชธ CI เชธเชพเชฅเซ เชชเซเชฐเชพเชฐเชเชญ เชเชฐเชตเชพ เชฎเชพเชเซ, เชชเชฐ เชเชพเช
เชฆเชฐเซเช เชตเชเชคเซ เชเซเชฏเชพเชฐเซ เชเซเชฐเซเชตเชฟเชธ CI เชถเชฐเซ เชฅเชพเชฏ เชเซ, เชธเชฐเซเชตเชฐ เชฒเซเชเช เชฅเชพเชฏ เชเซ, เชฐเซเชชเชฐเซเชเชพเชเชเชจ เชซเชพเชเชฒเชฎเชพเช เชเชฒเซเชฒเซเชเชฟเชค เชเชฆเซเชถเซเชจเซ เช เชฎเชฒเชฎเชพเช เชฎเซเชเซ เชเซ, เชเซเชฎเชพเช เช เชจเซเชฐเซเชช เชฐเชฟเชชเซเชเซเชเชฐเซ เชถเชพเชเชพเชเชจเซ เชเชฎเชพเชตเชตเชพเชจเซ เชธเชฎเชพเชตเซเชถ เชฅเชพเชฏ เชเซ.
โเชจเซเชเชฐเซ เชเซเชตเชจ เชเชเซเชฐ
เชเซเชฐเซเชตเชฟเชธ 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
, เช
เชจเซ เชคเซ เชชเซเชฐเซเชเซเชเซเช เชฌเชฟเชฒเซเชก เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชจเซ เชคเซเชกเชถเซ เชเซ เชเซเชฎ. เช เชตเซเชถเซเชตเชฟเช เชฐเซเชชเชฐเซเชเชพเชเชเชจเชฎเชพเช, เชนเซเช เชฌเชงเซเช เชธเซเชฅเชพเชจเชฟเช เชฐเซเชคเซ เชเชจเซเชธเซเชเซเชฒ เชเชฐเซเช เชเซเช, เชชเซเชทเซเช เชญเซเชฎเชฟเชฎเชพเช เชตเซเชฌเชชเซเช เชกเซเชต เชธเชฐเซเชตเชฐ เชเชฒเชพเชตเซเช เชเซเช (เช เชฎเชพเชฐเชพ เชตเชฐเซเชเชซเซเชฒเซเชจเซเช เชฒเชเซเชทเชฃ เชเซ), เช
เชจเซ เชชเชฐเซเชเซเชทเชฃเซ เชเชฒเชพเชตเซเช เชเซเช.
เชเซ เชคเชฎเซ เชเชเซเชเซ เชเซ เชเซ เชคเชฎเชพเชฐเซ เชฐเซเชชเซเชเซเชเชฐเซ เชเซเชธเซเช เชเชตเชฐเซเช เชฆเชฐเซเชถเชพเชตเชคเชพ เชฌเซเช เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เชเชฐเซ,
เชคเซ เช
เชนเซเช เชซเชพเชเชฒเชจเซ เชธเชพเชฎเชเซเชฐเซ เชเซ .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 เชเซเชฒ (เช เชฎเชพเชฐเชพ เชเชฟเชธเซเชธเชพเชฎเชพเช, เชเซเชฐเซเชตเชฟเชธ CI) เชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชเชฌเซเชจเซ เชกเซเชเชฐ เชนเชฌ เชชเชฐ เชฌเชจเชพเชตเซ, เชเซเช เชเชฐเซ เช เชจเซ เชฎเซเชเชฒเซ.
- เชธเชฐเซเชตเชฐ เชชเชฐ เชเชฎเซเช เชฒเซเชก เชเชฐเซ เชฐเชนเซเชฏเซเช เชเซ, เชเซเชจเชพ เชเชจเซเชเซเชจเชฐเชจเซ เชฌเชเชง เชเชฐเซ เชฐเชนเซเชฏเซเช เชเซ เช เชจเซ เชเช เชจเชตเซเช เชถเชฐเซ เชเชฐเซ เชฐเชนเซเชฏเซเช เชเซ (เช เชฎเชพเชฐเชพ เชเชฟเชธเซเชธเชพเชฎเชพเช, เชธเชฐเซเชตเชฐ DigitalOcean เชชเซเชฒเซเชเชซเซเชฐเซเชฎ เชชเชฐ เชเชพเชฒเซ เชเซ).
เชธเซเชชเซเชฐเชฅเชฎ, เชคเชฎเชพเชฐเซ เชเชฎเซเชเชจเซ เชกเซเชเชฐ เชนเชฌ เชชเชฐ เชฌเชฟเชฒเซเชก เชเชฐเชตเชพ, เชเซเช เชเชฐเชตเชพ เช เชจเซ เชงเชเซเชฒเชตเชพ เชฎเชพเชเซ เชเชเซเชฎเซเชเชฟเช เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชธเซเช เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ. เช เชฌเชงเซเช เช เชฎเซ เชชเชนเซเชฒเชพเชฅเซ เช เชเชพเชคเซ เชเชฐเซเชฏเซเช เชเซ เชคเซเชจเชพ เชเซเชตเซเช เช เชเซ, เชธเชฟเชตเชพเชฏ เชเซ เช เชฎเชจเซ เชเชฌเซเชเชจเซ เช เชจเชจเซเชฏ เชเซ เชเซเชธ เชธเซเชเชชเชตเชพ เช เชจเซ เชธเซเชตเชเชพเชฒเชฟเชค เชฒเซเชเชฟเชจ เชฎเชพเชเซ เชตเซเชฏเซเชนเชฐเชเชจเชพ เชเซเชเช. เชฎเชจเซ เชกเชฟเชชเซเชฒเซเชฏเชฎเซเชจเซเช เชธเซเชเซเชฐเชฟเชชเซเชเชจเซ เชเซเชเชฒเซเช เชตเชฟเชเชคเซ, เชเซเชฎ เชเซ เชเซเชเชฟเชเช เชตเซเชฏเซเชนเชฐเชเชจเชพ, เชฒเซเชเชฟเชจ, SSH เชเซ เชเชจเซเชเซเชกเชฟเชเช, SSH เชเชจเซเชเซเชถเชจ เชธเซเชฅเชพเชชเชจเชพ เชธเชพเชฅเซ เชฎเซเชถเซเชเซเชฒเซ เชนเชคเซ. เชชเชฐเชเชคเซ เชธเชฆเชญเชพเชเซเชฏเซ เชฎเชพเชฐเซ เชฌเซเชฏเชซเซเชฐเซเชจเซเชก เชฌเซเชถ เชธเชพเชฅเซ เชเซเชฌ เช เชธเชพเชฐเซ เชเซ, เชเซเชฎ เชเซ เช เชจเซเชฏ เชเชฃเซ เชตเชธเซเชคเซเช เชธเชพเชฅเซ. เชคเซเชฃเซ เชฎเชจเซ เช เชธเซเชเซเชฐเชฟเชชเซเช เชฒเชเชตเชพเชฎเชพเช เชฎเชฆเชฆ เชเชฐเซ.
เชคเซเชฅเซ, เชธเซเชเซเชฐเชฟเชชเซเชเชจเซ เชชเซเชฐเชฅเชฎ เชญเชพเช เชเชฌเซเชจเซ เชกเซเชเชฐ เชนเชฌ เชชเชฐ เช
เชชเชฒเซเชก เชเชฐเซ เชฐเชนเซเชฏเซ เชเซ. เช เชเชฐเชตเซเช เชเชเชฆเชฎ เชธเชฐเชณ เชเซ. เชฎเซเช เชเซ เชเซเชเซเชเช เชธเซเชเซเชฎเชจเซ เชเชชเชฏเซเช เชเชฐเซเชฏเซ เชเซ เชคเซเชฎเชพเช เชเชฟเช เชนเซเชถ เช
เชจเซ เชเชฟเช เชเซเช เชเซ เช
เชธเซเชคเชฟเชคเซเชตเชฎเชพเช เชนเซเชฏ เชคเซ เชคเซเชจเซ เชเซเชกเชตเชพเชจเซ เชธเชฎเชพเชตเซเชถ เชฅเชพเชฏ เชเซ. เช เชธเซเชจเชฟเชถเซเชเชฟเชค เชเชฐเซ เชเซ เชเซ เชเซเช เช
เชจเชจเซเชฏ เชเซ เช
เชจเซ เชคเซ เชเซ เชเชธเซเชฎเซเชฌเชฒเซ เชชเชฐ เชเชงเชพเชฐเชฟเชค เชเซ เชคเซเชจเซ เชเชณเชเชตเชพเชจเซเช เชธเชฐเชณ เชฌเชจเชพเชตเซ เชเซ. DOCKER_USERNAME
ะธ DOCKER_PASSWORD
เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพ เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชเชฒเซ เชเซ เชเซ เชเซเชฐเซเชตเชฟเชธ เชธเซเชเช เชเชจเซเชเชฐเชซเซเชธเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชธเซเช เชเชฐเซ เชถเชเชพเชฏ เชเซ. เชเซเชฐเซเชตเชฟเชธ CI เชเชชเชฎเซเชณเซ เชธเชเชตเซเชฆเชจเชถเซเชฒ เชกเซเชเชพ เชชเชฐ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชเชฐเชถเซ เชเซเชฅเซ เชเชฐเซเชจเซ เชคเซ เชเซเชเชพ เชนเชพเชฅเชฎเชพเช เชจ เชเชพเชฏ.
เช
เชนเซเช เชธเซเชเซเชฐเชฟเชชเซเชเชจเซ เชชเซเชฐเชฅเชฎ เชญเชพเช เชเซ 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}
เชธเซเชเซเชฐเชฟเชชเซเชเชจเซ เชฌเซเชเซ เชญเชพเช เชถเซเช เชนเชถเซ เชคเซ เชธเชเชชเซเชฐเซเชฃเชชเชฃเซ เชคเชฎเซ เชเชฏเชพ เชนเซเชธเซเชเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชฐเชนเซเชฏเชพเช เชเซ เช
เชจเซ เชคเซเชจเซ เชธเชพเชฅเซ เชเชจเซเชเซเชถเชจ เชเซเชตเซ เชฐเซเชคเซ เชเซเช เชตเซเชฒ เชเซ เชคเซเชจเชพ เชชเชฐ เชจเชฟเชฐเซเชญเชฐ เชเซ. เชฎเชพเชฐเชพ เชเชฟเชธเซเชธเชพเชฎเชพเช, เชนเซเช เชกเชฟเชเชฟเชเชฒ เชฎเชนเชพเชธเชพเชเชฐเชจเซ เชเชชเชฏเซเช เชเชฐเซเช เชเซเช, เชคเซเชฅเซ เชนเซเช เชธเชฐเซเชตเชฐ เชธเชพเชฅเซ เชเชจเซเชเซเช เชฅเชตเชพ เชฎเชพเชเซ เชเชฆเซเชถเซเชจเซ เชเชชเชฏเซเช เชเชฐเซเช เชเซเช 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
เชงเซเชฏเชพเชจ เชฐเชพเชเชตเชพ เชเซเชตเซ เชเซเชเชฒเซเช เชฌเชพเชฌเชคเซ
เชถเชเซเชฏ เชเซ เชเซ เชเซเชฏเชพเชฐเซ เชคเชฎเซ Travis 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
เช เชจเซ เช เชนเซเช เชคเซ เชถเซเช เชเชคเซเชชเชจเซเชจ เชเชฐเซ เชเซ - เชเช base64 เชเชจเซเชเซเชกเซเชก เชธเซเชเซเชฐเชฟเชเช:
MTIzLjQ1LjY3Ljg5IHNzaC1yc2EgQUFBQUIzTnphQzF5YzJFQUFBQUJJd0FBQVFFQWtsT1Vwa0RIcmZIWTE3U2JybVRJcE5MVEdLOVRqb20vQldEU1UKR1BsK25hZnpsSERUWVc3aGRJNHlaNWV3MThKSDRKVzlqYmhVRnJ2aVF6TTd4bEVMRVZmNGg5bEZYNVFWa2JQcHBTd2cwY2RhMwpQYnY3a09kSi9NVHlCbFdYRkNSK0hBbzNGWFJpdEJxeGlYMW5LaFhwSEFac01jaUxxOFY2UmpzTkFRd2RzZE1GdlNsVksvN1hBCnQzRmFvSm9Bc25jTTFROXg1KzNWMFd3NjgvZUlGbWIxenVVRmxqUUpLcHJyWDg4WHlwTkR2allOYnk2dncvUGIwcndlcnQvRW4KbVorQVc0T1pQblRQSTg5WlBtVk1MdWF5ckQyY0U4NlovaWw4YitndzNyMysxbkthdG1Ja2puMnNvMWQwMVFyYVRsTXFWU3NieApOclJGaTl3cmYrTTdRPT0geW91QGV4YW1wbGUuY29tCg==
เช เชนเซเช เชเชชเชฐ เชเชฃเชพเชตเซเชฒ เชเชฆเซเชถ เชเซ
install:
- echo < ะฟัะฑะปะธัะฝัะน ะบะปัั, ะทะฐะบะพะดะธัะพะฒะฐะฝะฝัะน ะฒ base64> | base64 -d >> $HOME/.ssh/known_hosts
เชเชจเซเชเซเชถเชจ เชธเซเชฅเชพเชชเชฟเชค เชเชฐเชคเซ เชตเชเชคเซ เชเชพเชจเชเซ เชเซ เชธเชพเชฅเซ เชธเชฎเชพเชจ เช เชญเชฟเชเชฎเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชถเชเชพเชฏ เชเซ, เชเชพเชฐเชฃ เชเซ เชธเชฐเซเชตเชฐเชจเซ เชเชเซเชธเซเชธ เชเชฐเชตเชพ เชฎเชพเชเซ เชคเชฎเชพเชฐเซ เชเชพเชจเชเซ เชเซเชจเซ เชเชฐเซเชฐ เชชเชกเซ เชถเชเซ เชเซ. เชเซ เชธเชพเชฅเซ เชเชพเชฎ เชเชฐเชคเซ เชตเชเชคเซ, เชคเชฎเชพเชฐเซ เชซเชเซเชค เชเชพเชคเชฐเซ เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ เชเซ เชคเซ เชเซเชฐเซเชตเชฟเชธ CI เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชตเซเชฐเซเชเชฌเชฒเชฎเชพเช เชธเซเชฐเชเซเชทเชฟเชค เชฐเซเชคเซ เชธเชเชเซเชฐเชนเชฟเชค เชเซ เช เชจเซ เชคเซ เชเซเชฏเชพเชเชฏ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เชจเชฅเซ.
เชจเซเชเชงเชจเซเชฏ เชฌเซเชเซ เชฌเชพเชฌเชค เช เชเซ เชเซ เชคเชฎเชพเชฐเซ เชธเชฎเชเซเชฐ เชเชฎเชพเชตเช เชธเซเชเซเชฐเชฟเชชเซเชเชจเซ เชเช เชฒเชพเชเชจ เชคเชฐเซเชเซ เชเชฒเชพเชตเชตเชพเชจเซ เชเชฐเซเชฐ เชชเชกเซ เชถเชเซ เชเซ, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ - เชธเชพเชฅเซ doctl
. เชเชจเซ เชเซเชเชฒเชพเช เชตเชงเชพเชฐเชพเชจเชพ เชชเซเชฐเชฏเชคเซเชจเซเชจเซ เชเชฐเซเชฐ เชชเชกเซ เชถเชเซ เชเซ.
doctl compute ssh <droplet> --ssh-command "ะฒัะต ะบะพะผะฐะฝะดั ะฑัะดัั ะทะดะตัั && ะทะดะตัั"
TLS/SSL เช เชจเซ เชฒเซเชก เชฌเซเชฒเซเชจเซเชธเชฟเชเช
เชฎเซเช เชเชชเชฐ เชเชฃเชพเชตเซเชฒ เชฌเชงเซเช เชเชฐเซเชฏเชพ เชชเชเซ, เชฎเชจเซ เชเซ เชเซเชฒเซเชฒเซ เชธเชฎเชธเซเชฏเชพ เชเชตเซ เชคเซ เช เชนเชคเซ เชเซ เชธเชฐเซเชตเชฐ เชชเชพเชธเซ SSL เชจเชฅเซ. เชเชพเชฐเชฃ เชเซ เชนเซเช Node.js เชธเชฐเซเชตเชฐเชจเซ เชเชชเชฏเซเช เชเชฐเซเช เชเซเช, เชฆเชฌเชพเชฃ เชเชฐเชตเชพ เชฎเชพเชเซ
เชนเซเช เชเชฐเซเชเชฐ เช เชฌเชงเซเช SSL เชฐเซเชชเชฐเซเชเชพเชเชเชจ เชเชพเชคเซ เชเชฐเชตเชพ เชฎเชพเชเชเชคเซ เชจ เชนเชคเซ, เชคเซเชฅเซ เชฎเซเช เชนเชฎเชฃเชพเช เช เชฒเซเชก เชฌเซเชฒเซเชจเซเชธเชฐ เชฌเชจเชพเชตเซเชฏเซเช เช
เชจเซ เชคเซเชจเซ เชตเชฟเชเชคเซ DNS เชฎเชพเช เชฐเซเชเซเชฐเซเชก เชเชฐเซ. DigitalOcean เชจเชพ เชเชฟเชธเซเชธเชพเชฎเชพเช, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชฒเซเชก เชฌเซเชฒเซเชจเซเชธเชฐ เชชเชฐ เชธเซเชตเชคเช-เชจเชตเซเชเชฐเชฃ เชธเซเชต-เชนเชธเซเชคเชพเชเซเชทเชฐเชฟเชค เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐ เชฌเชจเชพเชตเชตเซเช เช เชเช เชธเชฐเชณ, เชฎเชซเชค เช
เชจเซ เชเชกเชชเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชเซ. เช เช
เชญเชฟเชเชฎเชจเซ เชตเชงเชพเชฐเชพเชจเซ เชซเชพเชฏเชฆเซ เชเซ เชเซ เชเซ เชเชฐเซเชฐเซ เชนเซเชฏ เชคเซ เชคเซ เชฒเซเชก เชฌเซเชฒเซเชจเซเชธเชฐ เชชเชพเชเชณ เชเชพเชฒเชคเชพ เชฌเชนเซเชตเชฟเชง เชธเชฐเซเชตเชฐเซเชธ เชชเชฐ SSL เชธเซเช เชเชฐเชตเชพเชจเซเช เชเซเชฌ เช เชธเชฐเชณ เชฌเชจเชพเชตเซ เชเซ. เช เชธเชฐเซเชตเชฐเซเชธเชจเซ เชชเซเชคเชพเชจเซ SSL เชตเชฟเชถเซ เชฌเชฟเชฒเชเซเชฒ "เชตเชฟเชเชพเชฐเชตเชพ" เชจเชนเซเช เชฆเซ เชเซ, เชชเชฐเชเชคเซ เชคเซ เช เชธเชฎเชฏเซ เชชเซเชฐเซเชเชจเซ เชนเชเชฎเซเชถเชจเซ เชเซเชฎ เชเชชเชฏเซเช เชเชฐเซ เชเซ. 80
. เชคเซเชฅเซ เชฒเซเชก เชฌเซเชฒเซเชจเซเชธเชฐ เชชเชฐ SSL เชธเซเช เชเชฐเชตเซเช เช SSL เชธเซเช เชเชฐเชตเชพเชจเซ เชตเซเชเชฒเซเชชเชฟเช เชชเชฆเซเชงเชคเชฟเช เชเชฐเชคเชพเช เชตเชงเซ เชธเชฐเชณ เช
เชจเซ เชตเชงเซ เช
เชจเซเชเซเชณ เชเซ.
เชนเชตเซ เชคเชฎเซ เชธเชฐเซเชตเชฐ เชชเชฐเชจเชพ เชคเชฎเชพเชฎ เชชเซเชฐเซเช เชฌเชเชง เชเชฐเซ เชถเชเซ เชเซ เชเซ เชเชจเชเชฎเชฟเชเช เชเชจเซเชเซเชถเชจเซเชธ เชธเซเชตเซเชเชพเชฐเซ เชเซ - เชชเซเชฐเซเช เชธเชฟเชตเชพเชฏ 80
, เชฒเซเชก เชฌเซเชฒเซเชจเซเชธเชฐ เช
เชจเซ เชชเซเชฐเซเช เชธเชพเชฅเซ เชตเชพเชคเชเซเชค เชเชฐเชตเชพ เชฎเชพเชเซ เชตเชชเชฐเชพเชฏ เชเซ 22
SSH เชฎเชพเชเซ. เชชเชฐเชฟเชฃเชพเชฎเซ, เช เชฌเซ เชธเชฟเชตเชพเชฏเชจเชพ เชเซเชเชชเชฃ เชชเซเชฐเซเช เชชเชฐ เชธเชฐเซเชตเชฐเชจเซ เชธเซเชงเซเช เชเชเซเชธเซเชธ เชเชฐเชตเชพเชจเซ เชชเซเชฐเชฏเชพเชธ เชจเชฟเชทเซเชซเชณ เชเชถเซ.
เชชเชฐเชฟเชฃเชพเชฎเซ
เชฎเซเช เช เชธเชพเชฎเชเซเชฐเซเชฎเชพเช เชเซ เชตเชฟเชถเซ เชตเชพเชค เชเชฐเซ เชคเซ เชฌเชงเซเช เชเชฐเซเชฏเชพ เชชเชเซ, เชจ เชคเซ เชกเซเชเชฐ เชชเซเชฒเซเชเชซเซเชฐเซเชฎ เชเซ เชจ เชคเซ เชธเซเชตเชเชพเชฒเชฟเชค CI/CD เชธเชพเชเชเชณเซเชจเซ เชตเชฟเชญเชพเชตเชจเชพเช เชฎเชจเซ เชนเชตเซ เชกเชฐเชคเชพ เชจเชฅเซ. เชนเซเช เชธเชคเชค เชเชเซเชเชฐเชฃ เชธเชพเชเชเชณ เชธเซเช เชเชฐเชตเชพเชฎเชพเช เชธเชเซเชทเชฎ เชนเชคเซ, เชเซ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชเซเชก เชเชคเซเชชเชพเชฆเชจเชฎเชพเช เชเชพเชฏ เชคเซ เชชเชนเซเชฒเชพเช เชคเซเชจเซเช เชชเชฐเซเชเซเชทเชฃ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ เช
เชจเซ เชเซเชก เชเชชเชฎเซเชณเซ เชธเชฐเซเชตเชฐ เชชเชฐ เชเชฎเชพเชตเชตเชพเชฎเชพเช เชเชตเซ เชเซ. เช เชฌเชงเซเช เชนเชเซ เชชเชฃ เชฎเชพเชฐเชพ เชฎเชพเชเซ เชชเซเชฐเชฎเชพเชฃเชฎเชพเช เชจเชตเซเช เชเซ เช
เชจเซ เชฎเชจเซ เชเชพเชคเชฐเซ เชเซ เชเซ เชฎเชพเชฐเชพ เชธเซเชตเชเชพเชฒเชฟเชค เชตเชฐเซเชเชซเซเชฒเซเชจเซ เชฌเชนเซเชคเชฐ เชฌเชจเชพเชตเชตเชพ เช
เชจเซ เชคเซเชจเซ เชตเชงเซ เชเชพเชฐเซเชฏเชเซเชทเชฎ เชฌเชจเชพเชตเชตเชพเชจเชพ เชฐเชธเซเชคเชพเช เชเซ. เชคเซเชฅเซ เชเซ เชคเชฎเชพเชฐเซ เชชเชพเชธเซ เช เชฌเชพเชฌเชคเซ เชเซเช เชตเชฟเชเชพเชฐ เชนเซเชฏ, เชคเซ เชเซเชชเชพ เชเชฐเซเชจเซ เชฎเชจเซ เชเชฃเชพเชตเซ.
PS เช
เชฎเชพเชฐเชพเชฎเชพเช
เชชเซเชฐเชฟเชฏ เชตเชพเชเชเซ! เชถเซเช เชคเชฎเซ เชคเชฎเชพเชฐเชพ เชชเซเชฐเซเชเซเชเซเชเซเชธเชฎเชพเช CI/CD เชเซเชเซเชจเซเชฒเซเชเซเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชเซ?
เชธเซเชฐเซเชธ: www.habr.com