เบเปเบญเบเบเบฝเบเปเบงเบฑเบเปเบเบเปเบเปเบฒเบญเบดเบเบเบญเบเบเปเบญเบเปเบเบเปเบฒเบเบเบต 90s. เปเบเปเบกเบทเปเบญเบเปเบญเบเบกเบฑเบเบเปเบฒเบเบซเบผเบฒเบเบเบตเปเบเบฐเปเบญเบปเบฒเบเบงเบเบกเบฑเบเปเบเบปเปเบฒเปเบเปเบเบเปเบฒเบชเบฑเปเบเปเบฎเบฑเบเบงเบฝเบ. เบกเบตเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบญเบ Apache เปเบเบเบฒเบเปเบฎเบเบเบดเปเบเบเบตเปเปเบเปเบเบเบฑเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบปเปเบฒเบชเบนเปเบฅเบฐเบเบปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบตเปเบเปเบฒเบ FTP เปเบเบเบเบฒเบเบเบฝเบเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเปเบเบฑเปเบ: ftp://ftp.example.com
. เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเปเบฒเบเบเปเบญเบเปเบชเปเบเบทเปเปเบฅเบฐเบฅเบฐเบซเบฑเบเบเปเบฒเบเบเบญเบเบเปเบฒเบเปเบฅเบฐเบญเบฑเบเปเบซเบฅเบเปเบเบฅเปเปเบเบซเบฒเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ. เบกเบตเปเบงเบฅเบฒเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ, เบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบกเปเบเบเปเบฒเบเบเบฒเบเบเบงเปเบฒเปเบเบเบฑเบเบเบธเบเบฑเบ.
เปเบเบชเบญเบเบเบปเบเบชเบฐเบงเบฑเบเบเบฑเบเบเบฑเปเบเปเบเปเบเบฑเปเบเบกเบฒ, เบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบเปเบกเบตเบเบฒเบเบเปเบฝเบเปเบเบเบซเบผเบฒเบ. เปเบงเบฑเบเปเบเบเปเปเบเปเบเบฒเบเปเบเบฑเบเบเบงเบฒเบกเบชเบฑเบเบชเบปเบเบซเบผเบฒเบ; เบเบงเบเปเบเบปเบฒเบเปเบญเบเปเบเปเบฎเบฑเบเบเบฒเบเบเบฐเบเบญเบเบเปเบญเบเบเบตเปเบเบฐเบเบทเบเบเปเบญเบเบญเบญเบเบกเบฒเปเบเบเบฒเบเบเบฐเบฅเบดเบ. เปเบเบตเบเปเบงเบตเบเบฝเบงเปเบเปเบเบฒเบเปเบเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบซเบผเบฒเบเบญเบฑเบเบเบตเปเปเบฎเบฑเบเบงเบฝเบเบขเบนเปเปเบเบทเปเบญเบเบซเบผเบฑเบเบเบฒเบเบเบธเปเบเบเปเบฝเบเบเบฒเบเปเบซเบผเบ, เปเบฅเบฐเบเบฒเบเบเปเบฒเปเบเปเบฅเบฐเบเบปเบเบเบฒเบเบเบงเบเบเบธเบกเบชเบฐเบเบฑเบเปเบเปเบเบฒเบเปเบเบฑเบเปเบฅเบทเปเบญเบเบเบปเปเบงเปเบ.
เบชเปเบฒเบฅเบฑเบเปเบเบเบเบฒเบเบชเปเบงเบเบเบปเบงเบเบญเบเบเปเบญเบเบเปเบญเบเบกเบตเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบดเปเบชเบ. เปเบฅเบฐเบเปเบญเบเบฎเบนเปเบงเปเบฒเบเปเบญเบเบเปเบญเบเบเบฒเบเบเบงเบฒเบกเบชเบฒเบกเบฒเบเปเบเบเบฒเบเบเปเบฒเปเบเปเปเบงเบฑเบเปเบเบเปเปเบเบเบฒเบเบเบฐเบฅเบดเบเปเบเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเบฝเบเปเบเปเบซเบเบถเปเบ: เบเบฝเบเบฅเบฐเบซเบฑเบเปเบเบซเบฒเบชเบฒเบเบฒ. master
เปเบ GitHub. เบเบญเบเบเบฒเบเบเบฑเปเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบฎเบนเปเบงเปเบฒเปเบเบทเปเบญเบฎเบฑเบเบเบฐเบเบฑเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบญเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเปเบงเบฑเบเปเบเบเปเบเบฐเบซเบเบฒเบเบเปเบญเบเบเบญเบเบเปเบฒเบเบฐเปเบเบปเปเบฒ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเปเปเบเปเบญเบเบเบฒเบเบเบฑเบเบเบฒเบเบเบธเปเบก Kubernetes เบเบฐเบซเบเบฒเบเปเบซเบเป, เบซเบผเบทเบเปเบฒเปเบเปเปเบเบฑเบเปเบเปเบฅเบขเบต Docker Swarm, เบซเบผเบทเบฎเบฑเบเบชเบฒเปเบฎเบทเบญเบเบญเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบตเปเบกเบตเบเบฑเบ, เบเบปเบงเปเบเบเปเบฅเบฐเบเบธเบเบเบฐเปเบเบเบญเบทเปเบเป. เบเบงเบฒเบกเบชเบฑเบเบชเบปเบ. เปเบเบทเปเบญเบเบฑเบเบฅเบธเปเบเบปเปเบฒเปเบฒเบเปเบฎเบฑเบเปเบซเปเบงเบฝเบเบเปเบฒเบเบเบตเปเบชเบธเบเปเบเบปเปเบฒเบเบตเปเปเบเบฑเบเปเบเปเบเป, เบเปเบญเบเบเปเบญเบเบเบธเปเบเปเบเบตเบเบเบฑเบ CI/CD.
เบเปเบฒเบเปเบฒเบเบกเบตเปเบเบเบเบฒเบเบเบฐเบซเบเบฒเบเบเปเบญเบ (เปเบเบเปเบฅเบฐเบเบตเบเบตเป, เปเบเบเบเบฒเบ Node.js) เปเบฅเบฐเบเปเบฒเบเบขเบฒเบเบฎเบนเปเบงเบดเบเบตเบเบฒเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเปเบเบเบฒเบเบเปเบฒเปเบเปเปเบเบเบเบฒเบเบเบตเป, เปเบเบเบฐเบเบฐเบเบตเปเบฎเบฑเบเบเบฐเบเบฑเบเบงเปเบฒเบชเบดเปเบเบเบตเปเปเบเบฑเบเปเบงเปเปเบ repository เบเบปเบเบเบฑเบเบชเบดเปเบเบเบตเปเปเบฎเบฑเบเบงเบฝเบเปเบเบเบฒเบเบเบฐเบฅเบดเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบญเบ. เบเบดเบเบงเปเบฒเบเปเบฒเบเบญเบฒเบเบเบฐเบชเบปเบเปเบเปเบเบเบปเบเบเบงเบฒเบกเบเบตเป.
เปเบเบทเปเบญเบเปเบเปเบเบทเปเบญเบเบเบปเปเบ
เบเบนเปเบญเปเบฒเบเบเบญเบเบเบปเบเบเบงเบฒเบกเบเบตเปเบเบฒเบเบงเปเบฒเบเบฐเบกเบตเบเบงเบฒเบกเปเบเบปเปเบฒเปเบเบเบทเปเบเบเบฒเบเบเปเบฝเบงเบเบฑเบเปเบชเบฑเปเบเบเปเบฒเบชเบฑเปเบเปเบฅเบฐเบเบฒเบเบเบฝเบ Bash scripts. เบเบญเบเบเบฒเบเบเบฑเปเบ, เบฅเบฒเบงเบเบฐเบเปเบญเบเบเบฒเบเบเบฑเบเบเบต
เบเบธเบเบเบฐเบชเบปเบ
เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฐเบเปเปเปเบงเบปเปเบฒเบงเปเบฒเบเบปเบเบเบงเบฒเบกเบเบตเปเบชเบฒเบกเบฒเบเปเบญเบตเปเบเบงเปเบฒ "tutorial". เบเบตเปเปเบกเปเบเปเบญเบเบฐเบชเบฒเบเบซเบผเบฒเบเบเบงเปเบฒเบเบตเปเบเปเบญเบเปเบงเบปเปเบฒเบเปเบฝเบงเบเบฑเบเบชเบดเปเบเบเบตเปเบเปเบญเบเปเบเปเบฎเบฝเบเบฎเบนเปเปเบฅเบฐเบญเบฐเบเบดเบเบฒเบเบเบฐเบเบงเบเบเบฒเบเบเบตเปเปเบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบเบเปเบญเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบปเบเบชเบญเบเปเบฅเบฐเบเบฒเบเบเปเบฒเปเบเปเบฅเบฐเบซเบฑเบเปเบเบเบฒเบเบเบฐเบฅเบดเบ, เบเบฐเบเบดเบเบฑเบเปเบเบซเบเบถเปเบเบเปเบฒเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบ.
เบเบตเปเปเบกเปเบเบชเบดเปเบเบเบตเปเบเบฐเบเบงเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบญเบเบเปเบญเบเบชเบดเปเบเบชเบธเบเบฅเบปเบ.
เบชเปเบฒโเบฅเบฑเบโเบฅเบฐโเบซเบฑเบโเบเบฐโเบเบฒเบโเบเบฑเบโเบชเบฒโเบเบฒ repository เปเบโเบเบปเบโเปเบงเบฑเปเบโ master
, เบเบฒเบโเบเบฐโเบเบดโเบเบฑเบโเบเบฑเปเบโเบเปเปโเปเบโเบเบตเปโเปเบกเปเบโเบเบฐโเบเบดโเบเบฑเบโ:
- เปเบเบเบเบฒเบเบเปเปเบชเปเบฒเบเปเบ Travis CI เปเบฅเบตเปเบกเบเบปเปเบ.
- เบซเบเปเบงเบเบเปเบฅเบดเบเบฒเบเบเบฑเบเบซเบกเบปเบ, เบเบฒเบเปเบเบทเปเบญเบกเปเบเบเปเบฅเบฐเบเบฒเบเบเบปเบเบชเบญเบ end-to-end เปเบกเปเบเบเบฐเบเบดเบเบฑเบ.
เบเบฝเบเปเบเปเบชเปเบฒเบฅเบฑเบเบฅเบฐเบซเบฑเบเบเบตเปเบเบปเบเบขเบนเปเปเบ master
, เบเบฒเบโเบเบฐโเบเบดโเบเบฑเบโเบเบฑเปเบโเบเปเปโเปเบโเบเบตเปโ:
- เบเบธเบเบขเปเบฒเบเบเบตเปเปเบเปเบเปเบฒเบงเบกเบฒเบเปเบฒเบเปเบเบดเบ, เบเบงเบเบเบฑเบ ...
- เบเบฒเบเบชเปเบฒเบเบฎเบนเบเบเบฒเบ Docker เปเบเบเบญเบตเบเปเบชเปเบฅเบฐเบซเบฑเบ, เบเบฒเบเบเบฑเปเบเบเปเบฒเปเบฅเบฐเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเปเบเบเบฐเบเบธเบเบฑเบ.
- เบเบณเปเบเปเบฎเบนเบเบเบฒเบเปเบเปเบชเป Docker Hub.
- เบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบฒเบเบเบฐเบฅเบดเบ.
- เบเบณเบฅเบฑเบเบญเบฑเบเปเบซเบฅเบเบฎเบนเบเบเบฒเบ Docker Hub เปเบเบเบตเปเปเบเบตเบเปเบงเบต.
- เบเบฒเบเบขเบธเบเปเบเบปเบฒเบเบฒเบเบเบฑเบเบเบธเปเบเบเบฐเบเบธเบเบฑเบเปเบฅเบฐเปเบฅเบตเปเบกเบเบปเปเบเปเบซเบกเปเปเบเบเบญเบตเบเปเบชเปเบฎเบนเบเบเบฒเบเปเบซเบกเป.
เบเปเบฒเบเปเบฒเบเบฎเบนเปเบเปเปเบกเบตเบซเบเบฑเบเปเบเปเปเบเปเบฝเบงเบเบฑเบ Docker, เบฎเบนเบเบเบฒเบเปเบฅเบฐเปเบเบทเปเบญเบเบเบฑเบเบเบธ, เบขเปเบฒเบเบฑเบเบงเบปเบ. เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฐเบเบญเบเบเปเบฒเบเบเบฑเบเบซเบกเบปเบเบเปเบฝเบงเบเบฑเบเบกเบฑเบ.
CI/CD เปเบกเปเบเบซเบเบฑเบ?
เบเบปเบงเบซเบเปเป CI / CD เบซเบเปเปเบกเบฒเบเบฒเบ "เบเบฒเบเปเบเบทเปเบญเบกเปเบเบเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบ / เบเบฒเบเบเบฐเบเบดเบเบฑเบเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบ."
โ เบเบฒเบเปเบเบทเปเบญเบกเปเบเบเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบ
เบเบฒเบเปเบเบทเปเบญเบกเปเบเบเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบเปเบกเปเบเบเบฐเบเบงเบเบเบฒเบเบเบตเปเบเบฑเบเบเบฑเบเบเบฐเบเบฒเปเบฎเบฑเบเบชเบฑเบเบเบฒเบเบฑเบเบเปเบญเบเปเบเบฑเบเบเปเปเบกเบนเบเบฅเบฐเบซเบฑเบเปเบซเบผเปเบเบเบปเปเบเบเปเบเบญเบเปเบเบเบเบฒเบ (เปเบเบเบเบปเบเบเบฐเบเบดเปเบกเปเบเบชเบฒเบเบฒ. master
). เปเบเปเบงเบฅเบฒเบเบฝเบงเบเบฑเบ, เบเบธเบเบเบฐเบเบฒเบเบเบญเบเบฅเบฐเบซเบฑเบเปเบกเปเบเบฎเบฑเบเบเบฐเบเบฑเบเปเบเบเบเปเบฒเบเบเบฒเบเบเบปเบเบชเบญเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบ.
โ เบเบฒเบเบเบณเปเบเปเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบ
เบเบฒเบเบเบณเปเบเปเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบเปเบกเปเบเบเบฒเบเบเบณเปเบเปเบฅเบฐเบซเบฑเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเปเบฅเบทเปเบญเบเปเปเบฅเบทเปเบญเบเปเปเบเบปเปเบฒเปเบเบเบฒเบเบเบฐเบฅเบดเบ. เบชเปเบงเบเบเบตเบชเบญเบเบเบญเบเบเบปเบงเบซเบเปเป CI/CD เบเบฒเบเบเบฑเปเบเบเบทเบเบชเบฐเบเบปเบเบญเบญเบเปเบเบฑเบ "เบเบฒเบเบเบฑเบเบชเบปเปเบเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบ." เบเบตเปเปเบเบเบเบทเปเบเบเบฒเบเปเบฅเปเบงเปเบกเปเบเบเบทเบเบฑเบเบเบฑเบ "เบเบฒเบเบเบฐเบเบดเบเบฑเบเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบ", เปเบเป "เบเบฒเบเบเบฑเบเบชเบปเปเบเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบ" เบชเบฐเปเบเบเปเบเบดเบเบเบงเบฒเบกเบเปเบญเบเบเบฒเบเบเบตเปเบเบฐเบขเบทเบเบขเบฑเบเบเบฒเบเบเปเบฝเบเปเบเบเบเปเบงเบเบเบปเบเปเบญเบเบเปเบญเบเบเบตเปเบเบฐเปเบฅเบตเปเบกเบเบฐเบเบงเบเบเบฒเบเบเบดเบเบเบฑเปเบเปเบเบเบเบฒเบ.
เบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบ
เปเบญเบฑเบเบเบตเปเบเปเบญเบเปเบเปเปเบเบทเปเบญเบฎเบฝเบเบฎเบนเปเบเบฑเบเปเบปเบเบเบตเปเปเบญเบตเปเบเบงเปเบฒ
เปเบเบเปเบฅเบฐเบเบตเบเบญเบเบเปเบญเบ, เปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเปเบกเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ Express เบเบตเปเปเบฎเบฑเบเบงเบฝเบเบขเบนเปเปเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบก Node.js, เปเบซเปเบเปเบฅเบดเบเบฒเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ React เบซเบเปเบฒเบเบฝเบงเปเบฅเบฐเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบ API เบเปเบฒเบเปเบเบตเบเปเบงเบตเบเบตเปเบเบญเบเปเบ. เบชเบฐเบเบฒเบเบฑเบเบเบฐเบเบฐเบเปเบฒเบเบตเปเบเบฐเบเบดเบเบฑเบเบเบฒเบกเบเบธเบเบเบฐเบชเบฒเบเบเบตเปเบชเบฒเบกเบฒเบเบเบปเบเปเบซเบฑเบเบขเบนเปเปเบ
เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบเบถเบเบชเบฒเบซเบฒเบฅเบทเบเบฑเบ
Docker
Docker เปเบเบฑเบเปเบเบทเปเบญเบเบกเบทเบเบตเป, เบเบญเบเปเบเบเบฑเบเปเบเบเปเบเปเบฅเบเบตเบเบฑเบเบเบธเบเบฑเบเบเบธ, เบเปเบงเบเปเบซเปเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบชเบฒเบกเบฒเบเปเบเบเบขเบฒเบเปเบเปเบเปเบฒเบ, เบเปเบฒเปเบเปเปเบฅเบฐเบเปเบฒเปเบเบตเบเบเบฒเบเปเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเบเบฝเบงเบเบฑเบ, เปเบเบดเบเปเบกเปเบเบงเปเบฒเปเบเบฅเบฐเบเบฐเบเบญเบก Docker เปเบญเบเบเบฐเปเบฎเบฑเบเบงเบฝเบเบขเบนเปเปเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ. เบเปเบฒเบญเบดเบ, เบเปเบญเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเปเบญเบปเบฒเบกเบทเบเบญเบเบเปเบญเบเบเปเบฝเบงเบเบฑเบ Docker command line tools (CLI).
Docker Hub เปเบกเปเบเบเบฐเบกเบฒเบเบญเบฑเบเบเบฝเบงเบเบฑเบเบเบฑเบ
เบเบฑเปเบเบเบฑเปเบ, เปเบเบทเปเบญเปเบฅเบตเปเบกเบเบปเปเบเบเบฑเบ Docker, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบฎเบฑเบเบชเบญเบเบขเปเบฒเบ:
- เบเบฑเปเบ
DockerDesktop . - เบฅเบปเบเบเบฐเบเบฝเบเบชเปเบฒเบฅเบฑเบ
เบชเบนเบเบเบฒเบ docker .
เบซเบผเบฑเบเบเบฒเบเบเบตเป, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบงเบเปเบเบดเปเบเบงเปเบฒ Docker CLI เปเบฎเบฑเบเบงเบฝเบเบซเบผเบทเบเปเปเปเบเบเบเบฒเบเปเบฅเปเบเบเปเบฒเบชเบฑเปเบเบเปเปเปเบเบเบตเปเปเบเบทเปเบญเบเบงเบเปเบเบดเปเบเบชเบฐเบเบฑเบ Docker:
docker -v
เบเปเปเปเบ, เปเบเบปเปเบฒเบชเบนเปเบฅเบฐเบเบปเบ Docker Hub เปเบเบเบเบฒเบเปเบชเปเบเบทเปเบเบนเปเปเบเป เปเบฅเบฐเบฅเบฐเบซเบฑเบเบเปเบฒเบเบเบญเบเบเปเบฒเบเปเบกเบทเปเบญเบเบทเบเบเบฒเบก:
docker login
เปเบเบทเปเบญเปเบเป Docker, เบเปเบฒเบเบเปเบญเบเปเบเบปเปเบฒเปเบเปเบเบงเบเบงเบฒเบกเบเบดเบเบเบญเบเบฎเบนเบเบเบฒเบเปเบฅเบฐเปเบเบทเปเบญเบเบเบฑเบเบเบธ.
โเบฎเบนเบ
เบฎเบนเบเบเบฒเบเปเบกเปเบเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเบเปเบฒเบเบเบท blueprint เบเบตเปเบกเบตเบเปเบฒเปเบเบฐเบเปเบฒเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฐเบเบญเบเบเบฒเบเบฐเบเบฐ. เบเบตเปเปเบกเปเบเบเบฒเบเบเปเบฒเบเบเบตเปเบเปเปเบชเบฒเบกเบฒเบเบเปเบฝเบเปเบเบเปเบเปเบเบญเบเบฅเบฐเบเบปเบเปเบเบฅเป เปเบฅเบฐเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบญเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ. เบเบฑเบเบเบฑเบเบเบฐเบเบฒเบชเบฒเบกเบฒเบเปเบเปเบเบเบฑเบเบฎเบนเบเบเบฒเบเปเบเปเบขเปเบฒเบเบเปเบฒเบเบเบฒเบ.
# ะัะฒะพะด ัะฒะตะดะตะฝะธะน ะพะฑะพ ะฒัะตั
ะพะฑัะฐะทะฐั
docker images
เบเบณเบชเบฑเปเบเบเบตเปเบเบฐเบญเบญเบเบเบฒเบเบฐเบฅเบฒเบเบเบตเปเบกเบตเบชเปเบงเบเบซเบปเบงเบเปเปเปเบเบเบตเป:
REPOSITORY TAG IMAGE ID CREATED SIZE
---
เบเปเปเปเบเบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเบดเปเบเบเบฒเบเบเบปเบงเบขเปเบฒเบเบเบญเบเบเปเบฒเบชเบฑเปเบเปเบเบฎเบนเบเปเบเบเบเบฝเบงเบเบฑเบ - เบเปเบฒเบญเบดเบเบกเบตเบเปเบฒเบชเบฑเปเบเบเบตเปเบกเบตเบเปเบฒเบเบดเบเบเปเบฒเปเบซเบฑเบ, เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบปเบงเบขเปเบฒเบเบเบญเบเบชเบดเปเบเบเบตเปเบกเบฑเบเบชเบฒเบกเบฒเบเบญเบญเบเปเบเป.
โ เบเบฑเบเบเบธ
เบเบนเปเบเบญเบเปเบเบเปเบเบตเปเบกเปเบเปเบเบฑเบเปเบเบฑเบเบเบตเปเบชเบฒเบกเบฒเบเบเบฐเบเบดเบเบฑเบเปเบเปเปเบเบดเปเบเบเบฐเบเบญเบเบเปเบงเบเบเบธเบเบขเปเบฒเบเบเบตเปเบเปเบฒเปเบเบฑเบเปเบเบทเปเบญเปเบฅเปเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ. เบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบตเปเบกเบตเบงเบดเบเบตเบเบฒเบเบเบตเปเบเบฐเปเบฎเบฑเบเบงเบฝเบเบเบฝเบงเบเบฑเบเบชเบฐเปเบซเบกเบต, เปเบเบเบเปเปเบเปเบฒเบเบถเบเปเบเบดเบเปเบเบเบชเปเบฒเบเบเบทเปเบเบเบฒเบ: เปเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเบเบตเปเปเบเบเบเปเบฝเบงเปเบฅเบฐเปเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเบเบฝเบงเบเบฑเบ. เบเบธเบเปเบกเปเบเบงเปเบฒเบเบปเบงเบขเปเบฒเบเบเบญเบเบฎเบนเบเบเบฒเบเบเบฝเบงเบเบฑเบเปเบเปเบเบทเบเปเบเบตเบเบเบปเบงเปเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ.
# ะะตัะตัะธัะปะตะฝะธะต ะฒัะตั
ะบะพะฝัะตะนะฝะตัะพะฒ
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
---
โเปเบเบฑเบ
เปเบเบฑเบเปเบกเปเบเบเบปเบงเบเบตเปเบเบญเบเบชเบฐเบเบฑเบเบชเบฐเปเบเบฒเบฐเบเบญเบเบฎเบนเบเบเบฒเบ.
โ เบเบฒเบเบญเปเบฒเบเบญเบตเบเปเบงเบเปเปเบเบฑเบเบเปเบฒเบชเบฑเปเบ Docker
เบเบตเปเปเบกเปเบเบเบฒเบเบฅเบงเบกเบเบญเบเบเบฒเบเบเปเบฒเบชเบฑเปเบ Docker เบเบตเปเปเบเปเบเบปเปเบงเปเบ.
เบเบตเบกเบเบฒเบ
เบชเบฐเบเบฒเบเบเบฒเบ
เบเบปเบเบเบฐเบเบปเบ
เบฎเบนเบเบเบฒเบ
เบเบฒเบเบชเปเบฒเบเบฎเบนเบเบเบฒเบเบเบฒเบ Dockerfile
เบฎเบนเบเบเบฒเบ
เบเบฒเบเปเบเบฑเบเบฎเบนเบเบเบฒเบ
เบฎเบนเบเบเบฒเบ
เบฅเบฒเบเบเบทเปเบฎเบนเบเบเบฒเบ
Container
เปเบฅเปเบเบเบฒเบเบฐเบเบฐเปเบเบเบญเบตเบเปเบชเปเบฎเบนเบเบเบฒเบ
เบฎเบนเบเบเบฒเบ
เบเบณเบฅเบฑเบเบญเบฑเบเปเบซเบผเบเบฎเบนเบเปเบชเปเบเบฐเบเบฝเบ
เบฎเบนเบเบเบฒเบ
เบเบณเบฅเบฑเบเปเบซเบฅเบเบฎเบนเบเบเบฒเบเบเบฒเบเบฅเบตเบเบดเบเบเบต
Container
เบฅเบฒเบเบเบฒเบเบเบฑเบเบเบธ
เบฎเบนเบเบเบฒเบ/เบเบนเปเบเบญเบเปเบเบเปเบเบต
เบเบฒเบเปเบญเบปเบฒเบเบฒเบเบฐเบเบฐเบเบตเปเบเปเปเปเบเปเปเบเปเปเบฅเบฐเบฎเบนเบเบเบฒเบ
โDockerfile
เบเปเบญเบเบฎเบนเปเบงเบดเบเบตเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบฒเบเบเบฐเบฅเบดเบเปเบเบเปเบญเบเบเบดเปเบ. เบเปเบญเบเบกเบตเบเบฒเบเบเบฑเปเบเบเปเบฒ Webpack เบเบตเปเบญเบญเบเปเบเบเบกเบฒเปเบเบทเปเบญเบชเปเบฒเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ React เบเบตเปเบเบฝเบกเบเปเบญเบกเปเบฅเปเบง. เบเปเปเปเบ, เบเปเบญเบเบกเบตเบเปเบฒเบชเบฑเปเบเบเบตเปเปเบฅเบตเปเบกเบเบปเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบตเปเบญเบตเบเปเบชเป Node.js เปเบเบเบญเบ 5000
. เบกเบฑเบเปเบเบดเปเบเบเบทเบงเปเบฒเบเบตเป:
npm i # ัััะฐะฝะพะฒะบะฐ ะทะฐะฒะธัะธะผะพััะตะน
npm run build # ัะฑะพัะบะฐ React-ะฟัะธะปะพะถะตะฝะธั
npm run start # ะทะฐะฟััะบ Node-ัะตัะฒะตัะฐ
เบกเบฑเบเบเบงเบเบเบฐเบชเบฑเบเปเบเบเบงเปเบฒเบเปเบญเบเบเปเปเบกเบตเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบปเบงเบขเปเบฒเบเบชเปเบฒเบฅเบฑเบเปเบญเบเบฐเบชเบฒเบเบเบตเป. เปเบเปเปเบเบเบตเปเบเบตเป, เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบปเบเบฅเบญเบ, เบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ Node เบเบตเปเบเปเบฒเบเบเบฒเบเบเบฐเปเบฎเบฑเบ.
เปเบเบทเปเบญเปเบเปเบเบนเปเบเบญเบเปเบเบเปเบเบต, เบเปเบฒเบเบเบฐเบเปเบญเบเปเบซเปเบเปเบฒเปเบเบฐเบเปเบฒ Docker. เบเบตเปเปเบกเปเบเปเบฎเบฑเบเปเบเบเบเปเบฒเบเปเบเบฅเปเบเบตเปเปเบญเบตเปเบเบงเปเบฒ Dockerfile
, เบเบฑเปเบเบขเบนเปเปเบเบฅเบฐเบเบปเบเบฎเบฒเบเบเบญเบเปเบเบเบเบฒเบ. เปเบเบฅเปเบเบตเป, เปเบเบเบญเบเบเปเบฒเบญเบดเบ, เปเบเบดเปเบเบเบทเบงเปเบฒเบเปเบญเบเบเปเบฒเบเบเปเปเบชเบฒเบกเบฒเบเปเบเบปเปเบฒเปเบเปเบเป.
เปเบเปเบชเบดเปเบเบเบตเปเบกเบฑเบเบเบฐเบเบญเบเบเปเบงเบเบเบฝเบเปเบเปเบญเบฐเบเบดเบเบฒเบ, เบกเบตเบเปเบฒเบชเบฑเปเบเบเบดเปเบชเบ, เบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเบเบตเปเบเปเบฒเบเบเบทเบเบฑเบเบเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเบเบฒเบเปเบฎเบฑเบเบงเบฝเบ. เบเบตเปเปเบกเปเบเบเบฒเบเบเปเบฒเบชเบฑเปเบเปเบซเบผเบปเปเบฒเบเบตเป:
เบเบฒเบ โ เบเปเบฒโเบชเบฑเปเบโเบเบตเปโเบเบฐโเปเบฅเบตเปเบกโเบเบปเปเบโเปเบเบฅโเปโ. เบกเบฑเบโเบฅเบฐโเบเบธโเบฎเบนเบโเบเบทเปเบโเบเบฒเบโเบเบตเปโเบเบฑเบโเบเบธโเปเบเปโเบเบทเบโเบชเปเบฒเบโเบเบถเปเบโ.COPY โ เบเบฒเบเบชเบณเปเบเบปเบฒเปเบเบฅเปเบเบฒเบเปเบซเบผเปเบเบเปเบญเบเบเบดเปเบเปเบเปเบชเปเบเบฑเบ.WORKDIR โ เบเบฒเบโเบเบฑเปเบโเบเปเบฒโเบเบฒเบโเปเบฎเบฑเบโเบงเบฝเบโเบชเปเบฒโเบฅเบฑเบโเบเปเบฒโเบชเบฑเปเบโเบเบฑเปเบโเบเปเปโเปเบโเบเบตเปโ.RUN - เบเปเบฒเปเบเบตเบเบเบฒเบเบเปเบฒเบชเบฑเปเบ.เบญเบฐเบเบดเบเบฒเบ - เบเบฒเบโเบเบฑเปเบโเบเปเบฒ Port.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
เบญเบตเบเบเบฒเบกเบฎเบนเบเบเบฒเบเบเบทเปเบเบเบฒเบเบเบตเปเบเปเบฒเบเปเบฅเบทเบญเบ, เบเปเบฒเบเบญเบฒเบเบเบฐเบเปเบญเบเบเบดเบเบเบฑเปเบเบเบฒเบเปเบเบดเปเบเบเบฒเบญเบฒเปเบชเปเบเบตเปเบกเปเบเบตเบก. เบเบงเบฒเบกเบเบดเบเปเบกเปเบเบงเปเบฒเบเบฒเบเบฎเบนเบเบเบฒเบเบเบทเปเบเบเบฒเบ (เปเบเบฑเปเบ Node Alpine Linux) เบเบทเบเบชเปเบฒเบเบเบทเปเบเบเปเบงเบเปเบเบปเปเบฒเบซเบกเบฒเบเบเบตเปเบเบฐเปเบฎเบฑเบเปเบซเปเบเบงเบเบกเบฑเบเบกเบตเบเบงเบฒเบกเบซเบเบฒเปเบซเบเปเบเปเบเบปเปเบฒเบเบตเปเปเบเบฑเบเปเบเปเบเป. เบเบฑเปเบเบเบฑเปเบ, เบเบงเบเปเบเบปเบฒเบญเบฒเบเบเบฐเบเปเปเบกเบตเบเบฒเบเปเบเบเบเบฒเบเบเบตเปเบเปเบฒเบเบเบฒเบเบซเบงเบฑเบ.
โ เบเบฒเบโเบเปเปโเบชเปเบฒเบโ, เบเบฒเบโเบเบดเบโเบเบฑเปเบโเปเบฅเบฐโเบเบฒเบโเปเบฅเปเบโเบเบฒโเบเบฐโเบเบฐโ
เบเบฒเบเบเบฐเบเบญเบเบเปเบญเบเบเบดเปเบเปเบฅเบฐเบเบฒเบเปเบเบตเบเบเบปเบงเบเบญเบเบเบฑเบเบเบธเปเบกเปเบเบซเบผเบฑเบเบเบฒเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบกเบต Dockerfile
, เบงเบฝเบเบเบฒเบเปเบกเปเบเบเปเบญเบเบเปเบฒเบเบเปเบฒเบเบเบฒเบ. เบเปเบญเบเบเบตเปเบเปเบฒเบเบเบฐเบเบนเปเบฎเบนเบเบเบฒเบเปเบ Docker Hub, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเบเบปเบเบชเบญเบเบกเบฑเบเบขเบนเปเปเบเบเปเบญเบเบเบดเปเบ.
โ เบเบฐเบเบญเบ
เบเปเบญเบเบญเบทเปเบ เปเบปเบ, เบเปเบฒเบ เบเบณ เปเบเบฑเบเบเปเบญเบเปเบเบฑเบเบฅเบงเบเบฅเบงเบก latest
).
# ะกะฑะพัะบะฐ ะพะฑัะฐะทะฐ
docker build -t <image>:<tag> .
เบซเบผเบฑเบเบเบฒเบเปเบฅเปเบเบเปเบฒเบชเบฑเปเบเบเบตเป, เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบดเปเบ Docker เบชเปเบฒเบเบฎเบนเบเบเบฒเบ.
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 Hub. เบเบตเปเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒเบเปเบฒเบญเบดเบเบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบชเปเบฒเบ repository เบชเปเบฒเบฅเบฑเบเปเบเบเบเบฒเบเปเบ Docker Hub. เบซเบผเบฑเบเบเบฒเบเบเบตเป, เบเบงเบเปเบฎเบปเบฒเบเบฐเบกเบตเบชเบฐเบเบฒเบเบเบตเปเบเบตเปเบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบชเบปเปเบเบฎเบนเบเบเบฒเบ. เบฎเบนเบเบเบฒเบเบเปเบญเบเปเบเปเบฎเบฑเบเบเบฒเบเบเปเบฝเบเบเบทเปเปเบเบทเปเบญเปเบซเปเบเบทเปเบเบญเบเบกเบฑเบเปเบฅเบตเปเบกเบเบปเปเบเบเปเบงเบเบเบทเปเบเบนเปเปเบเป Docker Hub เบเบญเบเบเบงเบเปเบฎเบปเบฒ. เบเบตเปเบเบงเบเบเบฐเบเบฐเบเบดเบเบฑเบเบเบฒเบกเปเบเบเบเบทเปเบเบญเบ repository เปเบเป. เปเบเบเบเปเบฒเบชเบฑเปเบเปเบเปเบชเบฒเบกเบฒเบเบเบทเบเบงเบฒเบเปเบงเปเปเบเบเบญเบเบเปเบฒเบเบเบญเบเบเบทเป. เบเปเบฒเบเบฅเบธเปเบกเบเบตเปเปเบกเปเบเบเบปเบงเบขเปเบฒเบเบเบญเบเบเบฒเบเบเบฑเปเบเบเบทเปเบฎเบนเบเบเบฒเบเปเบเบเปเบเปเปเบเบเบเบฒเบเบเบตเป.
เปเบเบเบฑเบเบเบธเบเบฑเบเบเปเบฒเบเบชเบฒเบกเบฒเบเบชเปเบฒเบเบฎเบนเบเบเบฒเบเบเบตเปเบกเบตเบเบทเปเปเบซเบกเปเปเบฅเบฐเบเปเบฒเปเบเบตเบเบเบฒเบเบเปเบฒเบชเบฑเปเบ docker push
เปเบเบทเปเบญเบเบธเบเบเบฑเบเบกเบฑเบเปเบเบซเบฒเบเปเบญเบเปเบเบฑเบเบกเปเบฝเบ Docker Hub.
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
เบเปเบฒเบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเบเบต, เบฎเบนเบเบเบฒเบเบเบฐเบกเบตเบขเบนเปเปเบ Docker Hub เปเบฅเบฐเบชเบฒเบกเบฒเบเบญเบฑเบเปเบซเบฅเบเปเบเปเบเปเบฒเบเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบซเบผเบทเปเบญเบเปเบเบซเบฒเบเบนเปเบเบฑเบเบเบฐเบเบฒเบญเบทเปเบเป.
เบเบฑเปเบโเบเบญเบโเบเปเปโเปเบ
เปเบเบเบฑเบเบเบธเบเบฑเบเบเบงเบเปเบฎเบปเบฒเปเบเปเบเบงเบเบชเบญเบเบงเปเบฒเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ, เปเบเบฎเบนเบเปเบเบเบเบญเบ Docker container, เปเบกเปเบเปเบฎเบฑเบเบงเบฝเบเบขเบนเปเปเบเบเปเบญเบเบเบดเปเบ. เบเบงเบเปเบฎเบปเบฒเปเบเปเบญเบฑเบเปเบซเบฅเบเบเบฑเบเปเบชเป Docker Hub เปเบฅเปเบง. เบเบฑเบโเบซเบกเบปเบโเบเบตเปโเบซเบกเบฒเบโเบเบงเบฒเบกโเบงเปเบฒโเบเบงเบโเปเบฎเบปเบฒโเปเบเปโเบกเบตโเบเบงเบฒเบกโเบเบทเบโเบซเบเปเบฒโเบเบตเปโเบเบตโเบซเบผเบฒเบโเปเบโเบชเบนเปโเบเบฒเบโเปเบเบปเปเบฒโเบซเบกเบฒเบโเบเบญเบโเบเบงเบโเปเบฎเบปเบฒโ. เปเบเบเบฑเบเบเบธเบเบฑเบเบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเปเบเปเปเบเบชเบญเบเบเปเบฒเบเบฒเบกเปเบเบตเปเบกเปเบเบตเบก:
- เบเบฒเบโเบเบฑเปเบโเบเปเบฒโเปเบเบทเปเบญเบโเบกเบท CI เบชเปเบฒโเบฅเบฑเบโเบเบฒเบโเบเบปเบโเบชเบญเบโเปเบฅเบฐโเบเบฒเบโเบเปเบฒโเปเบเปโเบฅเบฐโเบซเบฑเบโ.
- เบเบฒเบเบเบฑเปเบเบเปเบฒเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบฒเบเบเบฐเบฅเบดเบเปเบเบทเปเบญเปเบซเปเบกเบฑเบเบชเบฒเบกเบฒเบเบเบฒเบงเปเบซเบฅเบเปเบฅเบฐเปเบฅเปเบเบฅเบฐเบซเบฑเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ.
เปเบเบเปเบฅเบฐเบเบตเบเบญเบเบเบงเบเปเบฎเบปเบฒ, เบเบงเบเปเบฎเบปเบฒเปเบเป
เบกเบฑเบเบเบงเบเบเบฐเบชเบฑเบเปเบเบเบงเปเบฒเปเบเบเบตเปเบเบตเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเปเบเบฒเบเบเบฐเบชเบปเบกเบเบฐเบชเบฒเบเบเบญเบเบเบฒเบเบเปเบฅเบดเบเบฒเบเบญเบทเปเบ. เบเบปเบงเบขเปเบฒเบ, เปเบเบเบเบตเปเบเบฐ Travis CI, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเป CircleCI เบซเบผเบท Github Actions. เปเบฅเบฐเปเบเบเบเบตเปเบเบฐเปเบเบฑเบ DigitalOcean - AWS เบซเบผเบท Linode.
เบเบงเบเปเบฎเบปเบฒเปเบเปเบเบฑเบเบชเบดเบเปเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบ Travis CI, เปเบฅเบฐเบเปเบญเบเบกเบตเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเบเบตเปเบเปเบฒเบซเบเบปเบเบเปเบฒเปเบเบเบฒเบเบเปเบฅเบดเบเบฒเบเบเบตเป. เบเบฑเปเบเบเบฑเปเบ, เบเบญเบเบเบตเปเบเปเบญเบเบเบฐเปเบงเบปเปเบฒเบชเบฑเปเบเปเบเปเบฝเบงเบเบฑเบเบงเบดเบเบตเบเบฒเบเบเบฐเบเบฝเบกเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบ.
Travis C.I.
Travis CI เปเบเบฑเบโเปเบเบทเปเบญเบโเบกเบทโเบชเปเบฒโเบฅเบฑเบโเบเบฒเบโเบเบปเบโเบชเบญเบโเปเบฅเบฐโเบเบฒเบโเบเปเบฒโเปเบเปโเบฅเบฐโเบซเบฑเบโ. เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเปเปเบขเบฒเบเปเบเบปเปเบฒเปเบเปเบเบเบงเบฒเบกเบชเบฑเบเบชเบปเบเบเบญเบเบเบฒเบเบเบฑเปเบเบเปเบฒ Travis CI, เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเปเบเปเบฅเบฐเปเบเบเบเบฒเบเปเบกเปเบเปเบเบฑเบเปเบญเบเบฐเบฅเบฑเบ, เปเบฅเบฐเบเบตเปเบเบฐเบเปเปเบเปเบฒเปเบญเบปเบฒเบเบปเบเบเบฐเปเบซเบเบเบซเบผเบฒเบ. เปเบเปเบเปเบญเบเบเบฐเบเบงเบกเปเบญเบปเบฒเบเบทเปเบเบเบฒเบเปเบเบทเปเบญเปเบซเปเปเบเบปเปเบฒเปเบฅเบตเปเบกเบเบปเปเบเบเปเบฒเบเปเบฒเบเบเบฑเบเบชเบดเบเปเบเปเบเป Travis CI. เบเปเปเบงเปเบฒเบเปเบฒเบเบเบฐเปเบฅเบทเบญเบ Travis CI, CircleCI, Jenkins, เบซเบผเบทเบญเบฑเบเบญเบทเปเบ, เบงเบดเบเบตเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบตเปเบเปเบฒเบเบเบทเบเบฑเบเบเบฐเบเบทเบเบเปเบฒเปเบเปเบขเบนเปเบเบปเปเบงเบเบธเบเปเบซเปเบ.
เปเบเบทเปเบญเปเบฅเบตเปเบกเบเบปเปเบเบเปเบงเบ Travis CI, เปเบซเปเปเบเบเบตเป
เปเบเปเบฅเบฐเบเบฑเปเบเบเบตเป Travis CI เปเบฅเบตเปเบกเบเบปเปเบ, เปเบเบตเบเปเบงเบตเบเบทเบเปเบเบตเบเบเบปเบง, เบเบฐเบเบดเบเบฑเบเบเปเบฒเบชเบฑเปเบเบเบตเปเบฅเบฐเบเบธเปเบงเปเปเบเปเบเบฅเปเบเบฒเบเบเบฑเปเบเบเปเบฒ, เบฅเบงเบกเบเบฑเบเบเบฒเบเบเบฑเบเปเบเปเบชเบฒเบเบฒเบเบญเบ repository เบเบตเปเบชเบญเบเบเปเบญเบเบเบฑเบ.
โ เบงเบปเบเบเบญเบเบเบตเบงเบดเบเบงเบฝเบ
เปเบเบฅเปเบเบฒเบเบเบฑเปเบเบเปเบฒ Travis 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
โ เบเบฒเบโเบเบปเบโเบชเบญเบโ
เปเบเปเบเบฅเปเบเบฒเบเบเบฑเปเบเบเปเบฒเบเปเบญเบเบเบฐเบเบฑเปเบเบเปเบฒเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ Travis CI เบเปเบญเบเบเบดเปเบ. เบเปเบญเบเปเบฅเบทเบญเบ Node 12 เปเบเบฑเบเบเบฒเบชเบฒเปเบฅเบฐเบเบญเบเปเบซเปเบฅเบฐเบเบปเบเบเบดเบเบเบฑเปเบ dependencies เบเบตเปเบเปเบญเบเบเบฒเบเปเบเป Docker.
เบเบธเบเบขเปเบฒเบเบเบตเปเบฅเบฐเบเบธเปเบงเปเปเบ .travis.yml
, เบเบฐเบเบทเบเบเบฐเบเบดเบเบฑเบเปเบเปเบงเบฅเบฒเบเบตเปเบเบฒเบเบฎเปเบญเบเบเปเบเบฒเบเบเบถเบเบเบฑเบเบซเบกเบปเบเปเบกเปเบเปเบฎเบฑเบเบเบฑเบเบเบธเบเบชเบฒเบเบฒเบเบญเบ repository, เปเบงเบฑเปเบเปเบชเบเปเบเปเปเบเปเบฅเบฐเบเบธเปเบงเปเปเบเบฑเบเบขเปเบฒเบเบญเบทเปเบ. เบเบตเปเปเบกเปเบเบเบธเบเบชเบปเบกเบเบฑเบเบเบตเปเปเบเบฑเบเบเบฐเปเบซเบเบเปเบเบฒเบฐเบงเปเบฒเบกเบฑเบเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบเบปเบเบชเบญเบเบฅเบฐเบซเบฑเบเบเบฑเบเบซเบกเบปเบเบเบตเปเปเบเบปเปเบฒเบกเบฒเปเบ repository. เบเบตเปเปเบฎเบฑเบเปเบซเปเบเปเบฒเบเบฎเบนเปเบงเปเบฒเบฅเบฐเบซเบฑเบเบเปเบญเบกเบเบตเปเบเบฐเบเบฝเบเปเบเบซเบฒเบชเบฒเบเบฒ. master
, เปเบฅเบฐเบงเปเบฒเบกเบฑเบเบเบฐเบเปเบฒเบฅเบฒเบเบเบฐเบเบงเบเบเบฒเบเบชเปเบฒเบเปเบเบเบเบฒเบ. เปเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบปเปเบงเปเบฅเบเบเบตเป, เบเปเบญเบเบเบดเบเบเบฑเปเบเบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเบขเบนเปเปเบเบเปเบญเบเบเบดเปเบ, เปเบฅเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ Webpack dev เปเบเบเบทเปเบเบซเบฅเบฑเบ (เบเบตเปเปเบกเปเบเบฅเบฑเบเบชเบฐเบเบฐเบเบญเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบญเบเบเปเบญเบ), เปเบฅเบฐเบเปเบฒเปเบเบตเบเบเบฒเบเบเบปเบเบชเบญเบ.
เบเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเปเบซเปเบเปเบญเบเปเบเบฑเบเบกเปเบฝเบเบเบญเบเบเปเบฒเบเบชเบฐเปเบเบเบเปเบฒเบเบเบตเปเบเบตเปเบเบญเบเปเบเบดเบเบเบฒเบเบเบธเปเบกเบเบญเบเบเบฒเบเบเบปเบเบชเบญเบ,
เบเบฑเปเบเบเบฑเปเบ, เบเบตเปเปเบกเปเบเปเบเบทเปเบญเปเบเบเบญเบเปเบเบฅเป .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
เบเบตเปเปเบกเปเบเบเปเบญเบเบเบตเปเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบตเปเบเบทเบเบเบฐเบเบดเบเบฑเบเบชเปเบฒเบฅเบฑเบเบเบธเบเบชเบฒเบเบฒเบเบญเบ repository เปเบฅเบฐเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบถเบเบเบฒเบเบฎเปเบญเบเบเปเบชเบดเปเบเบชเบธเบเบฅเบปเบ.
โ เบเบฒเบเบเบณเปเบเป
เบญเบตเบเปเบชเปเบเบฒเบเบชเบปเบกเบกเบธเบเบเบดเบเบฒเบเบงเปเบฒเบเบฒเบเบเบปเบเบชเบญเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเบเบฑเบเบซเบกเบปเบเบชเปเบฒเปเบฅเบฑเบเบชเบปเบเบเบปเบเบชเปเบฒเปเบฅเบฑเบ, เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบ, เปเบเบดเปเบเปเบเบฑเบเบเบฒเบเปเบฅเบทเบญเบ, เบเบฐเบเบดเบเบฑเบเบฅเบฐเบซเบฑเบเบเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบฒเบเบเบฐเบฅเบดเบ. เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบเบเบตเปเบเบฐเปเบฎเบฑเบเบชเบดเปเบเบเบตเปเบเบฝเบเปเบเปเบชเปเบฒเบฅเบฑเบเบฅเบฐเบซเบฑเบเบเบฒเบเบชเบฒเบเบฒ master
, เบเบงเบเปเบฎเบปเบฒเปเบซเปเบเปเบฒเปเบเบฐเบเปเบฒเบเบตเปเปเบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบเบฅเบฐเบเบปเบเปเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบฒเบเปเบเปเบเบฒเบ. เบเปเบญเบเบเบตเปเบเปเบฒเบเบเบฐเบเบฐเบเบฒเบเบฒเบกเปเบเปเบฅเบฐเบซเบฑเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเบดเปเบเบเปเปเปเบเปเบเปเบเบเบเบฒเบเบเบญเบเปเบเบปเปเบฒ, เบเปเบญเบเบขเบฒเบเบเบฐเปเบเบทเบญเบเปเบเบปเปเบฒเบงเปเบฒเปเบเบปเปเบฒเบเปเบญเบเบกเบตเบชเบฐเบเบดเบเบเบปเบงเบเบดเบเบเบตเปเปเบญเบตเปเบเบงเปเบฒเบเบฒเบเปเบเปเบเบฒเบ.
deploy:
# ะกะพะฑัะฐัั Docker-ะบะพะฝัะตะนะฝะตั ะธ ะพัะฟัะฐะฒะธัั ะตะณะพ ะฝะฐ Docker Hub
provider: script
script: bash deploy.sh
on:
branch: master
script เบเบฒเบเบเบดเบเบเบฑเปเบเปเบเปเปเบเบเบฑเบเบซเบฒเบชเบญเบเบขเปเบฒเบ:
- เบเปเปเบชเปเบฒเบ, เปเบเบฑเบเปเบฅเบฐเบชเบปเปเบเบฎเบนเบเบเบฒเบเปเบเบซเบฒ Docker Hub เปเบเบเปเบเปเปเบเบทเปเบญเบเบกเบท CI (เปเบเบเปเบฅเบฐเบเบตเบเบญเบเบเบงเบเปเบฎเบปเบฒ, Travis CI).
- เบเบฒเบเปเบซเบผเบเบฎเบนเบเบเบฒเบเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ, เบเบฒเบเบขเบธเบเปเบเบปเบฒเบเบฒเบเบเบฑเบเบเบธเปเบเบปเปเบฒเปเบฅเบฐเปเบฅเบตเปเบกเบเบปเปเบเปเบซเบกเป (เปเบเบเปเบฅเบฐเบเบตเบเบญเบเบเบงเบเปเบฎเบปเบฒ, เปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบตเปเปเบฎเบฑเบเบงเบฝเบเบขเบนเปเปเบเปเบงเบเบต DigitalOcean).
เบเปเบฒเบญเบดเบ, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเบเบฑเปเบเบเปเบฒเบเบฐเบเบงเบเบเบฒเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเปเบชเปเบฒเบ, tagging, เปเบฅเบฐเบเบธเบเบเบนเปเบฎเบนเบเบเบฒเบเบเบฑเบ Docker Hub. เบเบตเปเปเบกเปเบเบเบฑเบเบซเบกเบปเบเบเบตเปเบเปเบฒเบเบเบทเบเบฑเบเบเบฑเบเบชเบดเปเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเปเบเปเปเบฎเบฑเบเปเบฅเปเบงเบเปเบงเบเบเบปเบเปเบญเบ, เบเบปเบเปเบงเบฑเปเบเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบเบเบธเบเบเบฐเบชเบฒเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฒเบเบปเบ tags เปเบเบฑเบเปเบญเบเบฐเบฅเบฑเบเบเบฑเบเบฎเบนเบเบเบฒเบเปเบฅเบฐเบเบฒเบเปเบเบปเปเบฒเบชเบนเปเบฅเบฐเบเบปเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบ. เบเปเบญเบเบกเบตเบเบงเบฒเบกเบซเบเบธเปเบเบเบฒเบเบเบฑเบเบฅเบฒเบเบฅเบฐเบญเบฝเบเบเบฒเบเบขเปเบฒเบเบเบญเบเบชเบฐเบเบดเบเบเบฒเบเบเบดเบเบเบฑเปเบ, เปเบเบฑเปเบ: เบเบธเบเบเบฐเบชเบฒเบเบเบฒเบเบเบดเบเปเบเบฑเบ, เบเบฒเบเปเบเบปเปเบฒเบชเบนเปเบฅเบฐเบเบปเบ, เบเบฒเบเปเบเบปเปเบฒเบฅเบฐเบซเบฑเบ SSH key, เบเบฒเบเบชเปเบฒเบเบเบฑเปเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเป SSH. เปเบเปเปเบเบเบเบตเบเบตเปเปเบเบเบเบญเบเบเปเบญเบเบเบตเบซเบผเบฒเบเบเบฑเบ bash, เปเบเบฑเปเบเบเบฝเบงเบเบฑเบเบเบฑเบเบชเบดเปเบเบญเบทเปเบเป. เบฅเบฒเบงเบเปเบงเบเบเปเบญเบเบเบฝเบเบเบปเบเบเบตเป.
เบเบฑเปเบเบเบฑเปเบ, เบชเปเบงเบเบเปเบฒเบญเบดเบเบเบญเบ script เปเบกเปเบเบเบฒเบเบญเบฑเบเปเบซเบฅเบเบฎเบนเบเบเบฒเบเปเบเบเบฑเบ Docker Hub. เบเบตเปเปเบกเปเบเบเปเบญเบเบเปเบฒเบเบเปเบฒเบเบเบตเปเบเบฐเปเบฎเบฑเบ. เปเบเบเบเบฒเบ tagging เบเบตเปเบเปเบญเบเปเบเปเบเบฐเบเบญเบเบกเบตเบเบฒเบเบฅเบงเบก git hash เปเบฅเบฐ git tag, เบเปเบฒเบกเบต. เบเบตเปเบฎเบฑเบเบเบฐเบเบฑเบเบงเปเบฒเปเบเบฑเบเปเบกเปเบเปเบเบฑเบเปเบญเบเบฐเบฅเบฑเบเปเบฅเบฐเปเบฎเบฑเบเปเบซเปเบกเบฑเบเบเปเบฒเบเบเปเปเบเบฒเบเบฅเบฐเบเบธเบเบฒเบเบเบฐเบเบญเบเบเบตเปเบกเบฑเบเบญเบตเบเปเบชเป. DOCKER_USERNAME
ะธ DOCKER_PASSWORD
เปเบกเปเบเบเบปเบงเปเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเบเบญเบเบเบนเปเปเบเปเบเบตเปเบชเบฒเบกเบฒเบเบเบฑเปเบเบเปเบฒเปเบเปเปเบเบเปเบเปเบเบฒเบเปเบเปเบเบญเบ Travis CI. Travis CI เบเบฐเบเบฐเบกเบงเบเบเบปเบเบเปเปเบกเบนเบเบเบตเปเบฅเบฐเบญเบฝเบเบญเปเบญเบเปเบเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเปเบเบทเปเบญเบเปเปเปเบซเปเบกเบฑเบเบเบปเบเบขเบนเปเปเบเบกเบทเบเบดเบ.
เบเบตเปเปเบกเปเบเบชเปเบงเบเบเปเบฒเบญเบดเบเบเบญเบ script 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}
เบชเบดเปเบเบเบตเปเบเบฒเบเบเบตเบชเบญเบเบเบญเบเบชเบฐเบเบดเบเบเบฐเปเบเบฑเบเบเบถเปเบเบเบฑเบเปเบเบปเปเบฒเบเบฒเบเบเบตเปเบเปเบฒเบเบเปเบฒเบฅเบฑเบเปเบเปเปเบฅเบฐเบงเบดเบเบตเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบกเบฑเบเบเบทเบเบเบฑเบเบเบทเปเบ. เปเบเบเปเบฅเบฐเบเบตเบเบญเบเบเปเบญเบ, เบเบฑเบเบเบฑเปเบเปเบเปเบเปเบญเบเปเบเป Digital Ocean, เบเปเบญเบเปเบเปเบเปเบฒเบชเบฑเปเบเปเบเบทเปเบญเปเบเบทเปเบญเบกเบเปเปเบเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ aws
, เปเบฅเบฐเบญเบทเปเบเป.
เบเบฒเบเบเบฑเปเบเบเปเบฒเปเบเบตเบเปเบงเบตเบเปเปเปเบกเปเบเปเบฅเบทเปเบญเบเบเบฒเบเปเบเบเบชเบฐเปเบเบฒเบฐ. เบเบฑเปเบเบเบฑเปเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเปเบฒเบเบปเบ droplet เปเบเบเบญเบตเบเปเบชเปเบฎเบนเบเบเบฒเบเบเบทเปเบเบเบฒเบ. เบกเบฑเบเบเบงเบเบเบฐเบชเบฑเบเปเบเบเบงเปเบฒเบฅเบฐเบเบปเบเบเบตเปเบเปเบญเบเปเบฅเบทเบญเบเบฎเบฝเบเบฎเปเบญเบเปเบซเปเบกเบตเบเบฒเบเบเบดเบเบเบฑเปเบ Docker เบเปเบงเบเบเบปเบเปเบญเบเบเบฑเปเบเบเบฝเบงเปเบฅเบฐเบเบฒเบเปเบเบตเบเบเบปเบง Docker เบเบนเปเบกเบทเบเบฑเปเบเบเบฝเบง. เบเปเบญเบเปเบเป Ubuntu 18.04 เปเบเบทเปเบญเบเบดเบเบเบฑเปเบ Docker, เบเบฑเปเบเบเบฑเปเบเบเปเบฒเบเปเบฒเบเปเบเป Ubuntu เบเบทเบเบฑเบ, เบเปเบฒเบเบเบฝเบเปเบเปเบชเบฒเบกเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฒเบก
เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเปเปเปเบเปเปเบงเบปเปเบฒเบเปเบฝเบงเบเบฑเบเบเปเบฒเบชเบฑเปเบเบชเบฐเปเบเบฒเบฐเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฅเบดเบเบฒเบ, เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบฅเบฑเบเบชเบฐเบเบฐเบเบตเปเบชเบฒเบกเบฒเบเปเบเบเบเปเบฒเบเบเบฑเบเบขเปเบฒเบเบซเบผเบงเบเบซเบผเบฒเบเปเบเบเปเบฅเบฐเบเบตเบเปเบฒเบเป. เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฝเบเปเบเปเบเบฐเปเบซเปเปเบเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบปเปเบงเปเบเบเบตเปเบเบฐเบเบฐเบเบดเบเบฑเบเบซเบผเบฑเบเบเบฒเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเปเบฒเบ SSH เบเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบตเปเปเบเบเบเบฒเบเบเบฐเบเบทเบเบเปเบฒเปเบเปเบเป:
- เบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเบญเบเบซเบฒเบเบนเปเบเบญเบเปเบเบเปเบเบตเบเบตเปเบเปเบฒเบฅเบฑเบเปเบฅเปเบเปเบฅเบฐเบขเบธเบเบกเบฑเบ.
- เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเปเบเบตเบเบเบปเบงเบเบฑเบเบเบธเปเบซเบกเปเปเบเบเบทเปเบเบซเบฅเบฑเบ.
- เบเปเบฒเบเบเบฐเบเปเบญเบเบเบฑเปเบเบเบญเบเบเปเบญเบเบเบดเปเบเบเบญเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเปเบเบฑเบ
80
- เบเบตเปโเบเบฐโเปเบฎเบฑเบโเปเบซเปโเบเปเบฒเบโเปเบเบปเปเบฒโเปเบโเปเบโเปเบงเบฑเบโเปเบโเบเบตเปโเบขเบนเปโเปเบเบฑเปเบโ:โexample.com
, เปเบเบเบเปเปเบกเบตเบเบฒเบเบฅเบฐเบเบธเบเบญเบ, เปเบเบเบเบตเปเบเบฐเปเบเปเบเบตเปเบขเบนเปเปเบเบฑเปเบexample.com:5000
. - เบชเบธเบเบเปเบฒเบ, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบฅเบถเบเบเบฑเบเปเบฅเบฐเบฎเบนเบเบเบฒเบเปเบเบปเปเบฒเบเบฑเบเบซเบกเบปเบ.
เบเบตเปเปเบกเปเบเบเบฒเบเบชเบทเบเบเปเปเบเบญเบ script เปเบเป.
# ะะฐะนัะธ 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
เบเบฒเบเบชเบดเปเบเบเบตเปเบเบงเบเปเบญเบปเบฒเปเบเปเบชเป
เบกเบฑเบเปเบเบฑเบเปเบเปเบเปเบงเปเบฒเปเบกเบทเปเบญเบเปเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเปเบฒเบ SSH เบเบฒเบ Travis CI, เบเปเบฒเบเบเบฐเปเบซเบฑเบเบเปเบฒเปเบเบทเบญเบเบเบตเปเบเบฐเบเปเบญเบเบเบฑเบเบเปเปเปเบซเปเบเปเบฒเบเบชเบทเบเบเปเปเบเบฒเบเบเบดเบเบเบฑเปเบเบเปเบญเบเบงเปเบฒเบฅเบฐเบเบปเบเบเบฐเบฅเปเบเปเบฒเบเบฒเบเบเบญเบเบชเบฐเบซเบเบญเบเบเบญเบเบเบนเปเปเบเป.
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)?
เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบฎเบฝเบเบฎเบนเปเบงเปเบฒเบเบฐเปเบเบชเบฐเบเบฃเบดเบเบชเบฒเบกเบฒเบเบเบทเบเปเบเบปเปเบฒเบฅเบฐเบซเบฑเบเปเบ base64 เปเบเบทเปเบญเบเบฑเบเบเบถเบเบกเบฑเบเปเบเบฎเบนเบเปเบเบเบเบตเปเบกเบฑเบเบชเบฒเบกเบฒเบเปเบฎเบฑเบเบงเบฝเบเปเบเปเบชเบฐเบเบงเบเปเบฅเบฐเปเบเบทเปเบญเบเบทเปเบเป. เปเบเบเบฑเปเบเบเบญเบเบเบฒเบเบเบดเบเบเบฑเปเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบญเบเบฅเบฐเบซเบฑเบเบชเบฒเบเบฒเบฅเบฐเบเบฐเปเบฅเบฐเบเบฝเบเปเบชเปเปเบเบฅเป 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
เบงเบดเบเบตเบเบฒเบเบเบฝเบงเบเบฑเบเบชเบฒเบกเบฒเบเปเบเปเบเบฑเบเบเบฐเปเบเบชเปเบงเบเบเบปเบงเปเบเปเบงเบฅเบฒเบชเปเบฒเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเป, เปเบเบฒเบฐเบงเปเบฒเปเบเบปเปเบฒเบญเบฒเบเบเบฐเบเปเบญเบเบเบฒเบเบเบฐเปเบเบชเปเบงเบเบเบปเบงเปเบเบทเปเบญเปเบเบปเปเบฒเปเบเบดเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ. เปเบกเบทเปเบญเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบเบต, เบเปเบฒเบเบเบฝเบเปเบเปเบเปเบญเบเบเบฒเบเปเบซเปเปเบเปเปเบเบงเปเบฒเบกเบฑเบเบเบทเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเปเบงเปเบขเปเบฒเบเบเบญเบเปเบเบขเบนเปเปเบเบเบปเบงเปเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบก Travis CI เปเบฅเบฐเบงเปเบฒเบกเบฑเบเบเปเปเปเบเปเบชเบฐเปเบเบเบขเบนเปเบเปเบญเบเปเบเบเปเปเบเบฒเบก.
เบชเบดเปเบเบญเบทเปเบเบเบตเปเบเบงเบเบชเบฑเบเปเบเบเปเบกเปเบเบงเปเบฒเบเปเบฒเบเบญเบฒเบเบเบฐเบเปเบญเบเบเปเบฒเปเบเบตเบเบเบฒเบ script deployment เบเบฑเบเบซเบกเบปเบเปเบเบฑเบเปเบชเบฑเปเบเบเบฝเบง, เบเบปเบงเบขเปเบฒเบ - เบเบฑเบ doctl
. เบเบตเปเบญเบฒเบเบเบฐเบฎเบฝเบเบฎเปเบญเบเปเบซเปเบกเบตเบเบงเบฒเบกเบเบฐเบเบฒเบเบฒเบกเปเบเบตเปเบกเปเบเบตเบก.
doctl compute ssh <droplet> --ssh-command "ะฒัะต ะบะพะผะฐะฝะดั ะฑัะดัั ะทะดะตัั && ะทะดะตัั"
TLS/SSL เปเบฅเบฐเบเบฒเบเบเบธเปเบเบเปเบฝเบเบเบฒเบเปเบซเบผเบ
เบซเบผเบฑเบเบเบฒเบเบเบตเปเบเปเบญเบเปเบฎเบฑเบเบเบธเบเบขเปเบฒเบเบเบตเปเปเบเปเบเปเบฒเบงเบกเบฒเบเปเบฒเบเปเบเบดเบ, เบเบฑเบเบซเบฒเบชเบธเบเบเปเบฒเบเบเบตเปเบเปเบญเบเบเบปเบเปเบกเปเบเบงเปเบฒเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเปเปเบกเบต SSL. เปเบเบทเปเบญเบเบเบฒเบเบเปเบญเบเปเบเปเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ Node.js, เปเบเบทเปเบญเบเบฑเบเบเบฑเบ
เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเปเปเบเปเปเบเปเบญเบเบเบฒเบเบเบตเปเบเบฐเปเบฎเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒ SSL เบเบฑเบเบซเบกเบปเบเบเบตเปเบเปเบงเบเบเบปเบเปเบญเบ, เบเบฑเปเบเบเบฑเปเบเบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฝเบเปเบเปเบชเปเบฒเบเบเบปเบงเบเบธเปเบเบเปเบฝเบเบเบฒเบเปเบซเบผเบเปเบฅเบฐเบเบฑเบเบเบถเบเบฅเบฒเบเบฅเบฐเบญเบฝเบเบเบญเบเบกเบฑเบเบขเบนเปเปเบ DNS. เบชเปเบฒเบฅเบฑเบเบเบปเบงเบขเปเบฒเบ, เปเบเบเปเบฅเบฐเบเบตเบเบญเบ DigitalOcean, เบเบฒเบเบชเปเบฒเบเปเบเบขเบฑเปเบเบขเบทเบเบเบฒเบเบฅเบปเบเบเบฒเบกเบเปเบงเบเบเบปเบเปเบญเบเบเปเปเบญเบฒเบเบธเบญเบฑเบเบเบฐเปเบเบกเบฑเบเปเบเบเบปเบงเบเบธเปเบเบเปเบฝเบเบเบฒเบเปเบซเบผเบเปเบกเปเบเบเบฑเปเบเบเบญเบเบเบตเปเบเปเบฒเบเบเบฒเบ, เบเบฃเบตเปเบฅเบฐเปเบง. เบงเบดเบเบตเบเบฒเบเบเบตเปเบกเบตเบเบปเบเบเบฐเปเบซเบเบเปเบเบตเปเบกเปเบเบตเบกเบเบตเปเปเบฎเบฑเบเปเบซเปเบกเบฑเบเบเปเบฒเบเบซเบผเบฒเบเบเบตเปเบเบฐเบเบฑเปเบเบเปเบฒ SSL เปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบซเบผเบฒเบเบญเบฑเบเบเบตเปเปเบฅเปเบเบขเบนเปเปเบเบทเปเบญเบเบซเบผเบฑเบเบเบปเบงเบเบธเปเบเบเปเบฝเบเบเบฒเบเปเบซเบผเบเบเปเบฒเบเปเบฒเปเบเบฑเบ. เบเบตเปเปเบฎเบฑเบเปเบซเปเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบญเบเบเบปเบเปเบญเบเบเปเป "เบเบดเบ" เบเปเบฝเบงเบเบฑเบ SSL เบเบฑเบเบซเบกเบปเบ, เปเบเปเปเบเปเบงเบฅเบฒเบเบฝเบงเบเบฑเบเปเบเปเบเบญเบเปเบเบฑเบเบเบปเบเบเบฐเบเบด. 80
. เบชเบฐเบเบฑเปเบเบเบฒเบเบเบฑเปเบ SSL เปเบเบเบปเบงเบเบธเปเบเบเปเบฝเบเบเบฒเบเปเบซเบผเบเปเบกเปเบเบเปเบฒเบเบเบถเปเบเบซเบผเบฒเบเปเบฅเบฐเบชเบฐเบเบงเบเบเบงเปเบฒเบงเบดเบเบตเบเบฒเบเบเบฒเบเปเบฅเบทเบญเบเปเบเบเบฒเบเบเบฑเปเบเบเปเบฒ SSL.
เปเบเบเบฑเบเบเบธเบเบฑเบเบเปเบฒเบเบชเบฒเบกเบฒเบเบเบดเบเบเบญเบเบเบฑเบเบซเบกเบปเบเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบตเปเบเบญเบกเบฎเบฑเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฒเปเบเบปเปเบฒ - เบเบปเบเปเบงเบฑเปเบเบเบญเบ 80
, เปเบเปเปเบเบทเปเบญเบเบดเบเบเปเปเบชเบทเปเบชเบฒเบเบเบฑเบ load balancer, เปเบฅเบฐเบเบญเบ 22
เบชเปเบฒเบฅเบฑเบ SSH. เบเบฑเปเบเบเบฑเปเบ, เบเบงเบฒเบกเบเบฐเบเบฒเบเบฒเบกเปเบเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเปเบเบเบเบปเบเปเบเบเบญเบเปเบเปเบเบญเบเปเบซเบเบทเบญเบเบฒเบเบชเบญเบเบเบตเปเบเบฐเบฅเบปเปเบกเปเบซเบฅเบง.
เบเบปเบเปเบเปเบฎเบฑเบ
เบซเบผเบฑเบเบเบฒเบเบเบตเปเบเปเบญเบเปเบฎเบฑเบเบเบธเบเบขเปเบฒเบเบเบตเปเบเปเบญเบเปเบงเบปเปเบฒเปเบเปเบญเบเบฐเบชเบฒเบเบเบตเป, เบเบฑเบเปเบงเบเบต Docker เบซเบผเบทเปเบเบงเบเบงเบฒเบกเบเบดเบเบเบญเบเบฅเบฐเบเบปเบเบเปเบญเบเปเบชเป CI / CD เบญเบฑเบเบเบฐเปเบเบกเบฑเบเปเบฎเบฑเบเปเบซเปเบเปเบญเบเบขเปเบฒเบเบญเบตเบเบเปเปเปเบ. เบเปเบญเบเบชเบฒเบกเบฒเบเบเบฑเปเบเบฅเบฐเบเบปเบเบเปเบญเบเปเบชเปเบเบฒเบเปเบเบทเปเบญเบกเปเบเบเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบ, เปเบเปเบฅเบเบฐเบเบตเปเบฅเบฐเบซเบฑเบเบเบทเบเบเบปเบเบชเบญเบเบเปเบญเบเบเบตเปเบเบฐเปเบเบปเปเบฒเบชเบนเปเบเบฒเบเบเบฐเบฅเบดเบเปเบฅเบฐเบฅเบฐเบซเบฑเบเบเบฐเบเบทเบเบเปเบฒเปเบเปเบเปเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเปเบเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบ. เบเบตเปเปเบกเปเบเบเบฑเบเบซเบกเบปเบเบเบฑเบเบเปเบญเบเบเปเบฒเบเปเบซเบกเปเบชเปเบฒเบฅเบฑเบเบเปเบญเบ, เปเบฅเบฐเบเปเบญเบเปเบเปเปเบเบงเปเบฒเบกเบตเบงเบดเบเบตเบเบฒเบเบเบฑเบเบเบธเบเบเบฐเบเบงเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเบเบญเบเบเปเบญเบเปเบฅเบฐเปเบฎเบฑเบเปเบซเปเบกเบฑเบเบกเบตเบเบฐเบชเบดเบเบเบดเบเบฒเบเบซเบผเบฒเบเบเบถเปเบ. เบเบฑเปเบเบเบฑเปเบ, เบเปเบฒเบเปเบฒเบเบกเบตเบเบงเบฒเบกเบเบดเบเปเบเปเบเปเบฝเบงเบเบฑเบเปเบฅเบทเปเบญเบเบเบตเป, เบเบฐเบฅเบธเบเบฒเปเบเปเบเปเบซเปเบเปเบญเบเบเบฒเบ.
PS เปเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ
เบเปเบฒเบเบเบนเปเบญเปเบฒเบเบเบตเปเบฎเบฑเบเปเบเบ! เปเบเบปเปเบฒเปเบเปเปเบเบเปเบเปเบฅเบเบต CI/CD เปเบเปเบเบเบเบฒเบเบเบญเบเปเบเบปเปเบฒเบเป?
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com