เบšเบปเบ”เบฎเบฝเบ™ Kubernetes เบชเปˆเบงเบ™เบ—เบต 1: เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™, เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบ เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธ

เบ•เบฒเบกเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, Habr เป„เบ”เป‰เบชเป‰เบฒเบ‡เบชเบนเบ™ Kubernetes เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ„เบงเบฒเบกเบเบดเบ™เบ”เบตเบ—เบตเปˆเบˆเบฐเบˆเบฑเบ”เบงเบฒเบ‡เบชเบดเปˆเบ‡เบžเบดเบกเบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”เปƒเบ™เบกเบฑเบ™. เบˆเบญเบ‡!

Kubernetes เบ‡เปˆเบฒเบ. เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบ—เบฐเบ™เบฒเบ„เบฒเบ™เบˆเบถเปˆเบ‡เบˆเปˆเบฒเบเป€เบ‡เบดเบ™เปƒเบซเป‰เบ‚เป‰เบญเบเบซเบผเบฒเบเป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เบ‚เบปเบ‡เป€เบ‚เบ”เบ™เบตเป‰, เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเปƒเบœเบชเบฒเบกเบฒเบ”เบŠเปเบฒเบ™เบดเบŠเปเบฒเบ™เบฒเบ™เป€เบ•เบฑเบเป‚เบ™เป‚เบฅเบขเบตเบ™เบตเป‰เปƒเบ™เป€เบงเบฅเบฒเบžเบฝเบ‡เปเบ•เปˆเบชเบญเบ‡เบชเบฒเบกเบŠเบปเปˆเบงเป‚เบกเบ‡?

เบšเบปเบ”เบฎเบฝเบ™ Kubernetes เบชเปˆเบงเบ™เบ—เบต 1: เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™, เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบ เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธ

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบชเบปเบ‡เปƒเบชเบงเปˆเบฒ Kubernetes เบชเบฒเบกเบฒเบ”เบฎเบฝเบ™เบฎเบนเป‰เป„เบ”เป‰เป„เบง, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ‚เปเปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เบ—เปˆเบฒเบ™เบฅเบญเบ‡เบกเบฑเบ™เบ”เป‰เบงเบเบ•เบปเบงเบ—เปˆเบฒเบ™เป€เบญเบ‡. เบ„เบท, เบกเบตเบ„เบงเบฒเบกเบŠเปเบฒเบ™เบดเบŠเปเบฒเบ™เบฒเบ™เปƒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ™เบตเป‰, เบ—เปˆเบฒเบ™เบˆเบฐเบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบเบขเบนเปˆเปƒเบ™เบเบธเปˆเบก Kubernetes. เบ‚เป‰เบญเบเบชเบฒเบกเบฒเบ”เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เป„เบ”เป‰, เป€เบžเบฒเบฐเบงเปˆเบฒเบกเบฑเบ™เปเบกเปˆเบ™เบงเบดเบ—เบตเบเบฒเบ™เบ”เบฝเบงเบเบฑเบ™เบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เบ—เบตเปˆเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰เบ—เบตเปˆเบ‚เป‰เบญเบเบชเบญเบ™เบฅเบนเบเบ„เป‰เบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปƒเบซเป‰เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš Kubernetes. เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ™เบตเป‰เปเบ•เบเบ•เปˆเบฒเบ‡เบˆเบฒเบเบ„เบปเบ™เบญเบทเปˆเบ™? เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เบกเบตเบซเบผเบฒเบเบชเบดเปˆเบ‡เบซเบผเบฒเบเบขเปˆเบฒเบ‡. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบชเปˆเบงเบ™เปƒเบซเบเปˆเบ‚เบญเบ‡เบญเบธเบ›เบฐเบเบญเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบเปˆเบฝเบงเบเบฑเบšเบชเบดเปˆเบ‡เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบ - เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ‚เบญเบ‡ Kubernetes เปเบฅเบฐเบฅเบฑเบเบชเบฐเบ™เบฐเบ‚เบญเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡ kubectl. เบœเบนเป‰เบ‚เบฝเบ™เบ‚เบญเบ‡เป€เบญเบเบฐเบชเบฒเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบœเบนเป‰เบญเปˆเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบกเบตเบ„เบงเบฒเบกเบ„เบธเป‰เบ™เป€เบ„เบตเบเบเบฑเบšเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™, เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบเปเบฅเบฐ Docker containers. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป„เบ›เปƒเบ™เบ—เบฒเบ‡เบญเบทเปˆเบ™. เบ—เปเบฒเบญเบดเบ”, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเบปเบ™เบ—เบฐเบ™เบฒเบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆ microservices เปƒเบ™เบ„เบญเบกเบžเบดเบงเป€เบ•เบต. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบšเบดเปˆเบ‡เบเบฒเบ™เบชเป‰เบฒเบ‡เบฎเบนเบšเบžเบฒเบšเบšเบฑเบ™เบˆเบธเบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐ microservice. เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบฎเบนเป‰เบˆเบฑเบเบเบฑเบš Kubernetes เปเบฅเบฐเป€เบšเบดเปˆเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆ microservices เปƒเบ™เบเบธเปˆเบกเบ—เบตเปˆเบ„เบธเป‰เบกเบ„เบญเบ‡เป‚เบ”เบ Kubernetes.

เบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰, เบ”เป‰เบงเบเบงเบดเบ—เบตเบเบฒเบ™เบ„เปˆเบญเบเป†เบเบฑเบš Kubernetes, เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเปƒเบˆเปƒเบ™เบ„เบงเบฒเบกเป€เบฅเบดเบเบ‚เบญเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบชเปเบฒเบฅเบฑเบšเบ„เบปเบ™เบ—เบปเปˆเบงเป„เบ›เป€เบžเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‡เปˆเบฒเบเป†เปƒเบ™ Kubernetes. Kubernetes เปเบกเปˆเบ™เปเบ™เปˆเบ™เบญเบ™เบงเปˆเบฒเป€เบ›เบฑเบ™เป€เบ—เบเป‚เบ™เป‚เบฅเบเบตเบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบ, เบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เบœเบนเป‰เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบฎเบฝเบ™เบฎเบนเป‰เบกเบฑเบ™เบฎเบนเป‰เบงเปˆเบฒเบกเบฑเบ™เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบขเบนเปˆเปƒเบชเปเบฅเบฐเปเบ™เบงเปƒเบ”.

เบ”เบฝเบงเบ™เบตเป‰, เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบเบฐเบ•เบธเป‰เบ™, เปƒเบซเป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบฅเบฐเบชเบปเบ™เบ—เบฐเบ™เบฒเบเปˆเบฝเบงเบเบฑเบšเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš.

เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบปเบ”เบฅเบญเบ‡

เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบžเบฝเบ‡เปเบ•เปˆเบซเบ™เบถเปˆเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆ. เบกเบฑเบ™เปƒเบŠเป‰เป€เบงเบฅเบฒเบซเบ™เบถเปˆเบ‡เบ›เบฐเป‚เบซเบเบเป€เบ›เบฑเบ™เบเบฒเบ™เบ›เป‰เบญเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ‚เปเป‰เบ„เบงเบฒเบก, เบกเบฑเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ„เบงเบฒเบกเบฎเบนเป‰เบชเบถเบเบ‚เบญเบ‡เบ›เบฐเป‚เบซเบเบเบ™เบตเป‰, เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบฐเป€เบกเบตเบ™เบ—เบฑเบ”เบชเบฐเบ™เบฐเบ„เบฐเบ•เบดเบ„เบงเบฒเบกเบฎเบนเป‰เบชเบถเบเบ‚เบญเบ‡เบœเบนเป‰เบ‚เบฝเบ™เบ‚เบญเบ‡เบ›เบฐเป‚เบซเบเบเบเบฑเบšเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบชเบฐเป€เบžเบฒเบฐเปƒเบ”เบซเบ™เบถเปˆเบ‡.

เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบ›เปˆเบญเบ‡เบขเป‰เบฝเบกเบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ™เบตเป‰เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒ.

เบšเบปเบ”เบฎเบฝเบ™ Kubernetes เบชเปˆเบงเบ™เบ—เบต 1: เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™, เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบ เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธ
เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป€เบงเบฑเบšเป„เบŠเบ•เปŒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ„เบงเบฒเบกเบฎเบนเป‰เบชเบถเบเบ‚เบญเบ‡เบšเบปเบ”เป€เบฅเบทเปˆเบญเบ‡

เบˆเบฒเบเบ—เบฑเบ”เบชเบฐเบ™เบฐเบ”เป‰เบฒเบ™เบงเบดเบŠเบฒเบเบฒเบ™, เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบชเบฒเบก microservices, เปเบ•เปˆเบฅเบฐเบ„เบปเบ™เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เบชเบฐเป€เบžเบฒเบฐ:

  • SA-Frontend เป€เบ›เบฑเบ™เป€เบŠเบตเบšเป€เบงเบตเป€เบงเบฑเบš Nginx เบ—เบตเปˆเปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เป„เบŸเบฅเปŒ React เบ„เบปเบ‡เบ—เบตเปˆ.
  • SA-WebApp เปเบกเปˆเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เป€เบงเบฑเบšเบ—เบตเปˆเบ‚เบฝเบ™เปƒเบ™ Java เบ—เบตเปˆเบ›เบฐเบกเบงเบ™เบœเบปเบ™เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบˆเบฒเบเบ—เบฒเบ‡เบซเบ™เป‰เบฒ.
  • SA-Logic เปเบกเปˆเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ Python เบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ„เบงเบฒเบกเบฎเบนเป‰เบชเบถเบเบเปˆเบฝเบงเบเบฑเบšเบ‚เปเป‰เบ„เบงเบฒเบก.

เบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบˆเบฐเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒ microservices เบšเปเปˆเบกเบตเบขเบนเปˆเปƒเบ™เบเบฒเบ™เป‚เบ”เบ”เบ”เปˆเบฝเบง. เบžเบงเบเป€เบ‚เบปเบฒเบ›เบฐเบ•เบดเบšเบฑเบ”เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ‚เบญเบ‡ "เบเบฒเบ™เปเบšเปˆเบ‡เบ„เบงเบฒเบกเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบš", เปเบ•เปˆเปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™เบžเบงเบเป€เบ‚เบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบžเบปเบงเบžเบฑเบ™เบเบฑเบšเบเบฑเบ™เปเบฅเบฐเบเบฑเบ™.

เบšเบปเบ”เบฎเบฝเบ™ Kubernetes เบชเปˆเบงเบ™เบ—เบต 1: เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™, เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบ เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธ
เบ‚เปเป‰เบกเบนเบ™เป„เบซเบผเปƒเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™

เปƒเบ™เปเบœเบ™เบงเบฒเบ”เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ•เบปเบงเป€เบฅเบเบ‚เบญเบ‡เบฅเบฐเบšเบปเบš, เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบเบฒเบ™เป„เบซเบฅเบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ. เปƒเบซเป‰โ€‹เป€เบฎเบปเบฒโ€‹เป„เบ›โ€‹เป€เบšเบดเปˆเบ‡โ€‹เบžเบงเบโ€‹เป€เบ‚เบปเบฒ:

  1. เบ•เบปเบงเบ—เปˆเบญเบ‡เป€เบงเบฑเบšเบฎเป‰เบญเบ‡เบ‚เปเป„เบŸเบฅเปŒเบˆเบฒเบเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ index.html (เป€เบŠเบดเปˆเบ‡, เปƒเบ™เบ—เบฒเบ‡เบเบฑเบšเบเบฑเบ™, เบ”เบฒเบงเป‚เบซเบฅเบ”เบŠเบธเบ”เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ React).
  2. เบœเบนเป‰เปƒเบŠเป‰เป‚เบ•เป‰เบ•เบญเบšเบเบฑเบšเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™, เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบเบฒเบ™เป‚เบ—เป„เบ›เบซเบฒเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เป€เบงเบฑเบšเบ—เบตเปˆเบญเบตเบ‡เปƒเบชเปˆเบžเบฒเบเบฎเบฝเบ™ spring.
  3. เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เป€เบงเบฑเบšเบชเบปเปˆเบ‡เบ•เปเปˆเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ‚เปเป‰เบ„เบงเบฒเบกเป„เบ›เบซเบฒเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ Python.
  4. เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ Python เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ„เบงเบฒเบกเบฎเบนเป‰เบชเบถเบเบ‚เบญเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเปเบฅเบฐเบชเบปเปˆเบ‡เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเป€เบ›เบฑเบ™เบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบ•เปเปˆเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป.
  5. เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบžเบฒเบเบฎเบฝเบ™ spring เบชเบปเปˆเบ‡เบ„เปเบฒเบ•เบญเบšเบเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ React (เป€เบŠเบดเปˆเบ‡, เปƒเบ™เบ—เบฒเบ‡เบเบฑเบšเบเบฑเบ™, เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เบญเบ‡เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ‚เปเป‰เบ„เบงเบฒเบกเบเบฑเบšเบœเบนเป‰เปƒเบŠเป‰).

เบฅเบฐเบซเบฑเบ”เบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบžเบปเบšเป„เบ”เป‰ เบ—เบตเปˆเบ™เบตเป‰. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ‚เปเปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เบ—เปˆเบฒเบ™เบ„เบฑเบ”เบฅเบญเบเบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™เบ™เบตเป‰เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบ—เปˆเบฒเบ™เป€เบญเบ‡เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เป€เบžเบฒเบฐเบงเปˆเบฒเบกเบตเบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡เบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเบซเบผเบฒเบเบขเบนเปˆเบ‚เป‰เบฒเบ‡เบซเบ™เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒ.

เปเบฅเปˆเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเบญเบตเบ‡เปƒเบชเปˆเบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบเบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™

เป€เบžเบทเปˆเบญเปƒเบซเป‰เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰, เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบฅเบตเปˆเบกเบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบเบ—เบฑเบ‡เบชเบฒเบก. เปƒเบซเป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบ cutest เบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบ—เบฑเบ‡เบซเบกเบปเบ” - เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ front-end .

โ–เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ React เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™

เป€เบžเบทเปˆเบญเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ React, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ•เบดเบ”เบ•เบฑเป‰เบ‡เปเบžเบฅเบฐเบ•เบฐเบŸเบญเบก Node.js เปเบฅเบฐ NPM เปƒเบ™เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบ‚เบญเบ‡เบ—เปˆเบฒเบ™. เป€เบกเบทเปˆเบญเบ—เปˆเบฒเบ™เป„เบ”เป‰เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰, เปƒเบŠเป‰ terminal เป€เบžเบทเปˆเบญเบ™เปเบฒเบ—เบฒเบ‡เป„เบ›เบซเบฒเป‚เบŸเบ™เป€เบ”เบตเป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™ sa-frontend เปเบฅเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

npm install

เป‚เบ”เบเบเบฒเบ™เปเบฅเปˆเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ™เบตเป‰เบขเบนเปˆเปƒเบ™เป‚เบŸเบ™เป€เบ”เบต node_modules เบ„เบงเบฒเบกเป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ React เบˆเบฐเบ–เบทเบเป‚เบซเบฅเบ”, เบšเบฑเบ™เบ—เบถเบเบ—เบตเปˆเบขเบนเปˆเปƒเบ™เป„เบŸเบฅเปŒ package.json. เป€เบกเบทเปˆเบญ dependencies เบ–เบทเบเบ”เบฒเบงเป‚เบซเบผเบ”เบขเบนเปˆเปƒเบ™เป‚เบŸเบ™เป€เบ”เบตเบ”เบฝเบงเบเบฑเบ™, เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

npm start

เบซเบกเบปเบ”โ€‹เป€เบ—เบปเปˆเบฒโ€‹เบ™เบตเป‰. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ React เบเปเบฒเบฅเบฑเบ‡เป€เบฎเบฑเบ”เบงเบฝเบ, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบกเบฑเบ™เป„เบ”เป‰เป‚เบ”เบเบเบฒเบ™เป„เบ›เบ—เบตเปˆเบ—เบตเปˆเบขเบนเปˆเบ•เปเปˆเป„เบ›เบ™เบตเป‰เปƒเบ™เบ•เบปเบงเบ—เปˆเบญเบ‡เป€เบงเบฑเบšเบ‚เบญเบ‡เบ—เปˆเบฒเบ™: localhost:3000. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เปƒเบ™เบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบกเบฑเบ™. เบ—เปˆเบฒเบ™เบˆเบฐเป€เบซเบฑเบ™เบœเบปเบ™เบเบฐเบ—เบปเบšเบ‚เบญเบ‡เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปƒเบ™เบ•เบปเบงเบ—เปˆเบญเบ‡เป€เบงเบฑเบšเบ—เบฑเบ™เบ—เบต. เบ™เบตเป‰เปเบกเปˆเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบเป‰เบญเบ™เบญเบฑเบ™เบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒ "เบฎเป‰เบญเบ™" เบเบฒเบ™เบ—เบปเบ”เปเบ—เบ™เบ‚เบญเบ‡เป‚เบกเบ”เบนเบ™. เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ”เป‰เบฒเบ™เบซเบ™เป‰เบฒเป€เบ›เบฑเบ™เบ›เบฐเบชเบปเบšเบเบฒเบ™เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเปเบฅเบฐเบกเบตเบ„เบงเบฒเบกเบชเบธเบ.

โ– เบเบฒเบ™เบเบฐเบเบฝเบกเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ React เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบœเบฐเบฅเบดเบ”

เบชเปเบฒเบฅเบฑเบšเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบ•เบปเบงเบˆเบดเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ React, เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบ›เปˆเบฝเบ™เบกเบฑเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบŠเบธเบ”เบ‚เบญเบ‡เป„เบŸเบฅเปŒเบ„เบปเบ‡เบ—เบตเปˆเปเบฅเบฐเปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบเบฑเบšเบฅเบนเบเบ„เป‰เบฒเบ—เบตเปˆเปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเป€เบงเบฑเบšเป„เบŠเบ•เปŒ.

เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ React, เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡เป‚เบ”เบเปƒเบŠเป‰ terminal, เป„เบ›เบซเบฒเป‚เบŸเบ™เป€เบ”เบต sa-frontend เปเบฅเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

npm run build

เบ™เบตเป‰เบˆเบฐเบชเป‰เบฒเบ‡เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเปƒเบ™เป‚เบŸเบ™เป€เบ”เบตเป‚เบ„เบ‡เบเบฒเบ™ build. เบกเบฑเบ™เบˆเบฐเบกเบตเป„เบŸเบฅเปŒเบ„เบปเบ‡เบ—เบตเปˆเบ—เบฑเบ‡เปเบปเบ”เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เป€เบžเบทเปˆเบญเปƒเบซเป‰เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ React เป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰.

โ–เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เป„เบŸเบฅเปŒเบ„เบปเบ‡เบ—เบตเปˆเป‚เบ”เบเปƒเบŠเป‰ Nginx

เบ—เปเบฒเบญเบดเบ”เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ•เบดเบ”เบ•เบฑเป‰เบ‡เปเบฅเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเป€เบงเบฑเบšเป„เบŠเบ•เปŒ Nginx. เบกเบฑเบ™เป€เบ›เบฑเบ™ เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ”เบฒเบงเบ™เปŒเป‚เบซเบฅเบ”เบกเบฑเบ™เปเบฅเบฐเบŠเบญเบเบซเบฒเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เปเบฅเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบกเบฑเบ™. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบ„เบฑเบ”เบฅเบญเบเป€เบ™เบทเป‰เบญเปƒเบ™เบ‚เบญเบ‡เป‚เบŸเบ™เป€เบ”เบต sa-frontend/build เป„เบ›เบซเบฒเป‚เบŸเบ™เป€เบ”เบต [your_nginx_installation_dir]/html.

เบ”เป‰เบงเบเบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰, เป„เบŸเบฅเปŒเบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ React index.html เบˆเบฐเบกเบตเบขเบนเปˆ [your_nginx_installation_dir]/html/index.html. เบ™เบตเป‰เปเบกเปˆเบ™เป„เบŸเบฅเปŒเบ—เบตเปˆ, เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ Nginx เบœเบฐเบฅเบดเบ”เป€เบกเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบกเบฑเบ™. เป€เบŠเบตเบšเป€เบงเบตเบ–เบทเบเบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปƒเบซเป‰เบŸเบฑเบ‡เบขเบนเปˆเปƒเบ™เบžเบญเบ” 80, เปเบ•เปˆเบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ›เบฑเบšเปเบ•เปˆเบ‡เบ•เบฒเบกเบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เป‚เบ”เบเบเบฒเบ™เบ”เบฑเบ”เปเบเป‰เป„เบŸเบฅเปŒ [your_nginx_installation_dir]/conf/nginx.conf.

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เป€เบ›เบตเบ”เบ•เบปเบงเบ—เปˆเบญเบ‡เป€เบงเบฑเบšเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปเบฅเบฐเป„เบ›เบ—เบตเปˆ localhost:80. เบ—เปˆเบฒเบ™เบˆเบฐเป€เบซเบฑเบ™เบซเบ™เป‰เบฒเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ React.

เบšเบปเบ”เบฎเบฝเบ™ Kubernetes เบชเปˆเบงเบ™เบ—เบต 1: เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™, เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบ เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธ
เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ React เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เป‚เบ”เบเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ Nginx

เบ–เป‰เบฒเบ•เบญเบ™เบ™เบตเป‰เป€เบˆเบปเป‰เบฒเปƒเบชเปˆเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบžเบฒเบเบชเบฐเบซเบ™เบฒเบก Type your sentence เปเบฅเบฐเบเบปเบ”เบ›เบธเปˆเบก Send - เบšเปเปˆเบกเบตเบซเบเบฑเบ‡เบˆเบฐเป€เบเบตเบ”เบ‚เบถเป‰เบ™. เปเบ•เปˆ, เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบšเบดเปˆเบ‡ console, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเบชเบฐเปเบ”เบ‡เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™. เป€เบžเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเปƒเบˆเบšเปˆเบญเบ™เบ—เบตเปˆเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป€เบเบตเบ”เบ‚เบถเป‰เบ™เปเบ—เป‰เป†, เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบงเบดเป€เบ„เบฒเบฐเบฅเบฐเบซเบฑเบ”เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ.

โ– เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบฅเบฐเบซเบฑเบ”เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ”เป‰เบฒเบ™เบซเบ™เป‰เบฒ

เบฅเบญเบ‡เป€เบšเบดเปˆเบ‡เบฅเบฐเบซเบฑเบ”เป„เบŸเบฅเปŒ App.js, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰เบงเปˆเบฒเบเบฒเบ™เบเบปเบ”เบ›เบธเปˆเบก Send เป‚เบ—เบซเบฒเบงเบดเบ—เบตเบเบฒเบ™ analyzeSentence(). เบฅเบฐเบซเบฑเบ”เบชเปเบฒเบฅเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰เปเบกเปˆเบ™เปƒเบซเป‰เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰. เบเบฐเบฅเบธเบ™เบฒเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเป€เบชเบฑเป‰เบ™เบ—เบตเปˆเบกเบตเบ„เปเบฒเป€เบซเบฑเบ™เบ‚เบญเบ‡เปเบšเบšเบŸเบญเบก # ะะพะผะตั€, เบกเบตเบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเปƒเบซเป‰เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เบฅเบฐเบซเบฑเบ”. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบงเบดเป€เบ„เบฒเบฐเบŠเบดเป‰เบ™เบชเปˆเบงเบ™เบฅเบฐเบซเบฑเบ”เบญเบทเปˆเบ™เป†เปƒเบ™เปเบšเบšเบ”เบฝเบงเบเบฑเบ™.

analyzeSentence() {
    fetch('http://localhost:8080/sentiment', {  // #1
        method: 'POST',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({
                       sentence: this.textField.getValue()})// #2
    })
        .then(response => response.json())
        .then(data => this.setState(data));  // #3
}

1. URL เบ—เบตเปˆเบฎเป‰เบญเบ‡เบ‚เป POST เปเบกเปˆเบ™เป€เบฎเบฑเบ”. เบกเบฑเบ™เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบกเบตเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบขเบนเปˆเบ™เบตเป‰เบ—เบตเปˆเบ„เบฒเบ”เบงเปˆเบฒเบˆเบฐเบกเบตเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง.

2.เบฎเปˆเบฒเบ‡โ€‹เบเบฒเบ™โ€‹เบ„เปเบฒโ€‹เบฎเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบฑเบโ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เบชเบปเปˆเบ‡โ€‹เป„เบ›โ€‹เบซเบฒโ€‹เบ„เปเบฒโ€‹เบฎเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบฑเบโ€‹. เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ‚เบญเบ‡เบฎเปˆเบฒเบ‡เบเบฒเบ:

{
    sentence: "I like yogobella!"
}

3.เป€เบกเบทเปˆเบญเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบ•เปเปˆเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป, เบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเบˆเบฐเบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡. เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ–เบทเบเบชเบฐเปเบ”เบ‡เบ„เบทเบ™เปƒเบซเบกเปˆ. เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบกเบนเบ™ (เบ™เบฑเป‰เบ™เบ„เบท, เบงเบฑเบ”เบ–เบธ JSON เบ—เบตเปˆเบกเบตเบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™เปเบฅเบฐเบ„เบฐเปเบ™เบ™เบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเบ„เบดเบ”เป„เบฅเปˆ), เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบญเบญเบเบญเบปเบ‡เบ›เบฐเบเบญเบš Polarity, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡. เบ™เบตเป‰เปเบกเปˆเบ™เบงเบดเบ—เบตเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบญเบปเบ‡เบ›เบฐเบเบญเบš:

const polarityComponent = this.state.polarity !== undefined ?
    <Polarity sentence={this.state.sentence} 
              polarity={this.state.polarity}/> :
    null;

เบฅเบฐเบซเบฑเบ”เบ›เบฐเบเบปเบ”เบงเปˆเบฒเป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰เบ”เบต. เบญเบฑเบ™เบ™เบตเป‰เปเบกเปˆเบ™เบซเบเบฑเบ‡เบœเบดเบ”? เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบ—เบตเปˆเบขเบนเปˆเบ—เบตเปˆเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบžเบฐเบเบฒเบเบฒเบกเบชเบปเปˆเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป POST, เบšเปเปˆเบกเบตเบซเบเบฑเบ‡เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบเบญเบกเบฎเบฑเบšเปเบฅเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ™เบตเป‰, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบˆเบฐเบ–เบทเบเบ•เป‰เบญเบ‡เบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡. เบ„เบท, เป€เบžเบทเปˆเบญเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเบขเบนเปˆ http://localhost:8080/sentiment, เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป€เบงเบฑเบšเป„เบŠเบ•เปŒเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆ Spring.

เบšเบปเบ”เบฎเบฝเบ™ Kubernetes เบชเปˆเบงเบ™เบ—เบต 1: เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™, เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบ เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธ
เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบžเบฒเบเบฎเบฝเบ™ spring เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบเบญเบกเบฎเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป POST

โ– เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เป€เบงเบฑเบš Spring

เป€เบžเบทเปˆเบญเบ™เบณเปƒเบŠเป‰เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบžเบฒเบเบฎเบฝเบ™ spring, เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™ JDK8 เปเบฅเบฐ Maven เปเบฅเบฐเบ•เบปเบงเปเบ›เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ—เบตเปˆเบ–เบทเบเบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡. เป€เบกเบทเปˆเบญเป€เบˆเบปเป‰เบฒเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบ—เบฑเบ‡เปเบปเบ”เบ™เบตเป‰เปเบฅเป‰เบง, เป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เบชเบทเบšเบ•เปเปˆเป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰.

โ– เบเบฒเบ™เบซเบธเป‰เบกเบซเปเปˆเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เป„เบŸเบฅเปŒเบเบฐเบ›เป‹เบญเบ‡

เบ—เปˆเบญเบ‡เป„เบ›เบซเบฒ, เป‚เบ”เบเปƒเบŠเป‰ terminal, เป„เบ›เบซเบฒเป‚เบŸเบ™เป€เบ”เบต sa-webapp เปเบฅเบฐเปƒเบชเปˆเบ„เปเบฒเบชเบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

mvn install

เบซเบผเบฑเบ‡เบˆเบฒเบเปเบฅเปˆเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ™เบตเป‰เบขเบนเปˆเปƒเบ™เป‚เบŸเบ™เป€เบ”เบต sa-webapp เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบˆเบฐเบ–เบทเบเบชเป‰เบฒเบ‡ target. เบ™เบตเป‰เปเบกเปˆเบ™เบšเปˆเบญเบ™เบ—เบตเปˆเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ Java เบˆเบฐเบ•เบฑเป‰เบ‡เบขเบนเปˆ, เบšเบฑเบ™เบˆเบธเบขเบนเปˆเปƒเบ™เป„เบŸเบฅเปŒเบเบฐเบ›เป‹เบญเบ‡, เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เป‚เบ”เบเป„เบŸเบฅเปŒ sentiment-analysis-web-0.0.1-SNAPSHOT.jar.

โ– เปเบฅเปˆเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ Java

เป„เบ›เบ—เบตเปˆเป‚เบŸเบ™เป€เบ”เบต target เปเบฅเบฐเปเบฅเปˆเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ”เป‰เบงเบเบ„เปเบฒเบชเบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

java -jar sentiment-analysis-web-0.0.1-SNAPSHOT.jar

เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบˆเบฐเป€เบเบตเบ”เบ‚เบทเป‰เบ™เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เปเบฒเบชเบฑเปˆเบ‡เบ™เบตเป‰. เป€เบžเบทเปˆเบญเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเบฒเบ™เปเบเป‰เป„เบ‚, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบงเบดเป€เบ„เบฒเบฐเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™เปƒเบ™เบ‚เปเป‰เบกเบนเบ™ stack trace เป„เบ”เป‰:

Error creating bean with name 'sentimentController': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'sa.logic.api.url' in value "${sa.logic.api.url}"

เบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒ, เบชเบดเปˆเบ‡เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบชเบธเบ”เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เบเปˆเบฒเบงเป€เบ–เบดเบ‡เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เบšเปเปˆเป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบŠเบตเป‰เปเบˆเบ‡เบ„เบงเบฒเบกเบซเบกเบฒเบ sa.logic.api.url. เบ‚เปเปƒเบซเป‰เบงเบดเป€เบ„เบฒเบฐเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เป€เบเบตเบ”เบ‚เบทเป‰เบ™.

โ– เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบฅเบฐเบซเบฑเบ”เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ Java

เบ™เบตเป‰เปเบกเปˆเบ™ snippet เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เป€เบเบตเบ”เบ‚เบถเป‰เบ™.

@CrossOrigin(origins = "*")
@RestController
public class SentimentController {
    @Value("${sa.logic.api.url}")    // #1
    private String saLogicApiUrl;
    @PostMapping("/sentiment")
    public SentimentDto sentimentAnalysis(
        @RequestBody SentenceDto sentenceDto) 
    {
        RestTemplate restTemplate = new RestTemplate();
        return restTemplate.postForEntity(
                saLogicApiUrl + "/analyse/sentiment",    // #2
                sentenceDto, SentimentDto.class)
                .getBody();
    }
}

  1. เปƒเบ™ SentimentController เบกเบตเบžเบฒเบเบชเบฐเบซเบ™เบฒเบก saLogicApiUrl. เบ„เปˆเบฒเบ‚เบญเบ‡เบกเบฑเบ™เบ–เบทเบเบฅเบฐเบšเบธเป‚เบ”เบเบŠเบฑเบšเบชเบดเบ™ sa.logic.api.url.
  2. เบชเบฒเบ saLogicApiUrl concatenates เบเบฑเบšเบกเบนเบ™เบ„เปˆเบฒ /analyse/sentiment. เบžเบงเบเป€เบ‚เบปเบฒเบฎเปˆเบงเบกเบเบฑเบ™เบชเป‰เบฒเบ‡เบ—เบตเปˆเบขเบนเปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป‚เบ—เบซเบฒ microservice เบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ‚เปเป‰เบ„เบงเบฒเบก.

โ–เบเปเบฒเบ™เบปเบ”เบกเบนเบ™เบ„เปˆเบฒเบŠเบฑเบšเบชเบดเบ™

เปƒเบ™เบžเบฒเบเบฎเบฝเบ™ spring, เปเบซเบผเปˆเบ‡เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ‚เบญเบ‡เบกเบนเบ™เบ„เปˆเบฒเบŠเบฑเบšเบชเบดเบ™เปเบกเปˆเบ™เป„เบŸเบฅเปŒ application.properties, เบŠเบถเปˆเบ‡เบชเบฒเบกเบฒเบ”เบžเบปเบšเป„เบ”เป‰เบ—เบตเปˆ sa-webapp/src/main/resources. เปเบ•เปˆเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ‚เบญเบ‡เบกเบฑเบ™เบšเปเปˆเปเบกเปˆเบ™เบงเบดเบ—เบตเบ”เบฝเบงเบ—เบตเปˆเบˆเบฐเบเปเบฒเบ™เบปเบ”เบกเบนเบ™เบ„เปˆเบฒเบŠเบฑเบšเบชเบดเบ™. เบ™เบตเป‰เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เป‚เบ”เบเปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

java -jar sentiment-analysis-web-0.0.1-SNAPSHOT.jar --sa.logic.api.url=WHAT.IS.THE.SA.LOGIC.API.URL

เบกเบนเบ™เบ„เปˆเบฒเบ‚เบญเบ‡เบŠเบฑเบšเบชเบดเบ™เบ™เบตเป‰เบ„เบงเบ™เบŠเบตเป‰เป„เบ›เบซเบฒเบ—เบตเปˆเบขเบนเปˆเบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ Python เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ.

เป‚เบ”เบเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบกเบฑเบ™, เบžเบงเบเป€เบฎเบปเบฒเบšเบญเบเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป€เบงเบฑเบš Spring เบšเปˆเบญเบ™เบ—เบตเปˆเบกเบฑเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ›เบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ‚เปเป‰เบ„เบงเบฒเบก.

เป€เบžเบทเปˆเบญเบšเปเปˆเปƒเบซเป‰เบŠเบตเบงเบดเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบชเบฑเบšเบชเบปเบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบงเปˆเบฒเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ Python เบˆเบฐเบกเบตเบขเบนเปˆ localhost:5000 เปเบฅเบฐเปƒเบซเป‰เบžเบฐเบเบฒเบเบฒเบกเบšเปเปˆเบฅเบทเบกเบเปˆเบฝเบงเบเบฑเบšเบกเบฑเบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบˆเบฐเป€เบ›เบตเบ”เบ•เบปเบงเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบžเบฒเบเบฎเบฝเบ™ spring เบˆเบฐเบกเบตเบฅเบฑเบเบชเบฐเบ™เบฐเบ™เบตเป‰:

java -jar sentiment-analysis-web-0.0.1-SNAPSHOT.jar --sa.logic.api.url=http://localhost:5000

เบšเบปเบ”เบฎเบฝเบ™ Kubernetes เบชเปˆเบงเบ™เบ—เบต 1: เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™, เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบ เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธ
เบฅเบฐเบšเบปเบšเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ‚เบฒเบ”เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ Python

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เปเบกเปˆเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ Python เปเบฅเบฐเบฅเบฐเบšเบปเบšเบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบเบ•เบฒเบกเบ—เบตเปˆเบ„เบฒเบ”เป„เบงเป‰.

โ– เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ Python

เป€เบžเบทเปˆเบญเปเบฅเปˆเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ Python, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบกเบต Python 3 เปเบฅเบฐ Pip เบ•เบดเบ”เบ•เบฑเป‰เบ‡, เปเบฅเบฐเบ•เบปเบงเปเบ›เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบ•เป‰เบญเบ‡เบ–เบทเบเบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡.

โ– เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบช

เป„เบ›เบ—เบตเปˆเป‚เบŸเบ™เป€เบ”เบตเป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™ sa-logic/sa เปเบฅเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

python -m pip install -r requirements.txt
python -m textblob.download_corpora

โ– เป€เบ›เบตเบ”เปƒเบŠเป‰เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™

เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ dependencies, เบžเบงเบเป€เบฎเบปเบฒเบžเป‰เบญเบกเบ—เบตเปˆเบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ:

python sentiment_analysis.py

เบซเบผเบฑเบ‡เบˆเบฒเบเปเบฅเปˆเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ–เบทเบเบšเบญเบเบ•เปเปˆเป„เบ›เบ™เบตเป‰:

* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)

เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเปเบกเปˆเบ™เปเบฅเปˆเบ™เปเบฅเบฐเบฅเปเบ–เป‰เบฒเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบขเบนเปˆเบ—เบตเปˆ localhost:5000/

โ– เบเบฒเบ™เบ„เบปเป‰เบ™เบ„เบงเป‰เบฒเบฅเบฐเบซเบฑเบ”

เบฅเบญเบ‡เป€เบšเบดเปˆเบ‡เบฅเบฐเบซเบฑเบ”เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ Python เป€เบžเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒเบกเบฑเบ™เบ•เบญเบšเบชเบฐเปœเบญเบ‡เบ•เปเปˆเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเปเบ™เบงเปƒเบ”:

from textblob import TextBlob
from flask import Flask, request, jsonify
app = Flask(__name__)                                   #1
@app.route("/analyse/sentiment", methods=['POST'])      #2
def analyse_sentiment():
    sentence = request.get_json()['sentence']           #3
    polarity = TextBlob(sentence).sentences[0].polarity #4
    return jsonify(                                     #5
        sentence=sentence,
        polarity=polarity
    )
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)                #6

  1. เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบงเบฑเบ”เบ–เบธ Flask.
  2. เบเบฒเบ™เบฅเบฐเบšเบธเบ—เบตเปˆเบขเบนเปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป POST เบเบฑเบšเบกเบฑเบ™.
  3. เบ”เบถเบ‡เป€เบญเบปเบฒเบŠเบฑเบšเบชเบดเบ™ sentence เบˆเบฒเบโ€‹เบญเบปเบ‡โ€‹เบเบฒเบ™โ€‹เบฎเป‰เบญเบ‡โ€‹เบ‚เปโ€‹.
  4. เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบšเปเปˆเป€เบ›เบตเบ”เป€เบœเบตเบเบŠเบทเปˆ TextBlob เปเบฅเบฐเป„เบ”เป‰เบฎเบฑเบšเบกเบนเบ™เบ„เปˆเบฒ polarity เบชเปเบฒเบฅเบฑเบšเบ›เบฐเป‚เบซเบเบเบ—เปเบฒเบญเบดเบ”เบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเบขเบนเปˆเปƒเบ™เบฎเปˆเบฒเบ‡เบเบฒเบเบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป (เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบ™เบตเป‰เปเบกเปˆเบ™เบ›เบฐเป‚เบซเบเบเบ”เบฝเบงเบ—เบตเปˆเบ–เบทเบเบชเบปเปˆเบ‡เป„เบ›เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ).
  5. เบเบฑเบšเบ„เบทเบ™เบ„เปเบฒเบ•เบญเบšเบ—เบตเปˆเบฎเปˆเบฒเบ‡เบเบฒเบเบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบ‚เปเป‰เบ„เบงเบฒเบกเบ‚เบญเบ‡เบ›เบฐเป‚เบซเบเบเปเบฅเบฐเบ•เบปเบงเบŠเบตเป‰เบงเบฑเบ”เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบชเปเบฒเบฅเบฑเบšเบกเบฑเบ™ polarity.
  6. เป€เบ›เบตเบ”เบ•เบปเบงเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ Flask, เป€เบŠเบดเปˆเบ‡เบˆเบฐเบกเบตเบขเบนเปˆ 0.0.0.0:5000 (เบ—เปˆเบฒเบ™เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบกเบฑเบ™เป„เบ”เป‰เป‚เบ”เบเปƒเบŠเป‰เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปเบšเบšเบŸเบญเบก localhost:5000).

เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบเบ—เบตเปˆเบ›เบฐเบเบญเบšเป€เบ›เบฑเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบเบณเบฅเบฑเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆ. เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ–เบทเบเบ›เบฑเบšเป€เบžเบทเปˆเบญเบžเบปเบงเบžเบฑเบ™เบเบฑเบšเบเบฑเบ™เปเบฅเบฐเบเบฑเบ™. เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเปเบœเบ™เบงเบฒเบ”เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบขเบนเปˆเปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ‚เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ™เบตเป‰.

เบšเบปเบ”เบฎเบฝเบ™ Kubernetes เบชเปˆเบงเบ™เบ—เบต 1: เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™, เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบ เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธ
เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบ™เบฅเบฐเบžเบฒเบเบ—เบฑเบ‡เปเบปเบ”เบ—เบตเปˆเบ›เบฐเบเบญเบšเป€เบ›เบฑเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ–เบทเบเบ™เบณเป„เบ›เบชเบนเปˆเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบ

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เบเปˆเบญเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบˆเบฐเบชเบทเบšเบ•เปเปˆ, เป€เบ›เบตเบ”เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ React เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปƒเบ™เบ•เบปเบงเบ—เปˆเบญเบ‡เป€เบงเบฑเบšเปเบฅเบฐเบžเบฐเบเบฒเบเบฒเบกเปเบเบเบšเบฒเบ‡เบ›เบฐเป‚เบซเบเบเบเบฑเบšเบกเบฑเบ™. เบ–เป‰เบฒเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบ–เบทเบเป€เบฎเบฑเบ”เบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡ - เบซเบผเบฑเบ‡เบˆเบฒเบเบเบปเบ”เบ›เบธเปˆเบก Send เบ—เปˆเบฒเบ™เบˆเบฐเป€เบซเบฑเบ™เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เบžเบฒเบเบชเบฐเบซเบ™เบฒเบกเบ‚เปเป‰เบ„เบงเบฒเบก.

เปƒเบ™เบžเบฒเบเบ•เปเปˆเป„เบ›, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเบปเบ™เบ—เบฐเบ™เบฒเบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ microservices เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปƒเบ™ Docker containers. เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบˆเปเบฒเป€เบ›เบฑเบ™เป€เบžเบทเปˆเบญเบเบฐเบเบฝเบกเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบขเบนเปˆเปƒเบ™เบเบธเปˆเบก Kubernetes.

Docker containers

Kubernetes เป€เบ›เบฑเบ™เบฅเบฐเบšเบปเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เปƒเบ™เบเบฒเบ™เบ™เบณเปƒเบŠเป‰, เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบ เปเบฅเบฐ เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบšเบฑเบ™เบˆเบธเบšเบฑเบ™เบˆเบธ. เบกเบฑเบ™เบ–เบทเบเป€เบญเบตเป‰เบ™เบงเปˆเบฒ "เบ™เบฑเบเบ”เบปเบ™เบ•เบตเบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบต". เบ–เป‰เบฒ Kubernetes เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบต, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เบฅเบฐเบšเบปเบšเบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบ—เปเบฒเบญเบดเบ”เบ—เบตเปˆเบˆเบฐเป„เบ”เป‰เป€เบญเบปเบฒเบšเบฑเบ™เบˆเบธเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰. เปเบ•เปˆเบ—เปเบฒเบญเบดเบ”, เปƒเบซเป‰เป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบชเบดเปˆเบ‡เบ—เบตเปˆเบšเบฑเบ™เบˆเบธเปเบกเปˆเบ™. เบšเบฒเบ‡เบ—เบตเบ„เปเบฒเบ•เบญเบšเบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบ–เบฒเบกเบ‚เบญเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเบกเบฑเบ™เปเบกเปˆเบ™เบชเบฒเบกเบฒเบ”เบžเบปเบšเป„เบ”เป‰เปƒเบ™ เป€เบญเบเบฐเบชเบฒเบ™ เป€เบ–เบดเบ‡ Docker:

เบฎเบนเบšเบžเบฒเบšเบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบตเปเบกเปˆเบ™เบŠเบธเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ—เบตเปˆเบกเบตเบ™เป‰เปเบฒเบซเบ™เบฑเบเป€เบšเบปเบฒ, เบšเบฑเบ™เบˆเบธเบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡, เป€เบŠเบดเปˆเบ‡เบ›เบฐเบเบญเบšเบกเบตเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เป€เบžเบทเปˆเบญเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบกเบฑเบ™: เบฅเบฐเบซเบฑเบ”เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™, เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”, เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเปเบฅเบฐเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”, เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ. เป‚เบ›เบฅเปเบเบฅเบกเบšเบฑเบ™เบˆเบธเบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก Linux เปเบฅเบฐ Windows, เปเบฅเบฐเบžเบงเบเบกเบฑเบ™เบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบเบ”เบฝเบงเบเบฑเบ™เบ•เบฐเบซเบผเบญเบ”เป€เบงเบฅเบฒเป‚เบ”เบเบšเปเปˆเบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™.

เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบšเบฑเบ™เบˆเบธเบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบขเบนเปˆเปƒเบ™เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเปƒเบ”เบเปเปˆเบ•เบฒเบก, เบฅเบงเบกเบ—เบฑเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบเบฒเบ™เบœเบฐเบฅเบดเบ”, เปเบฅเบฐเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบกเบตเบขเบนเปˆเปƒเบ™เบžเบงเบเบกเบฑเบ™เบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบเบ”เบฝเบงเบเบฑเบ™เปƒเบ™เบ—เบธเบเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก.

เป€เบžเบทเปˆเบญเบชเบณเบซเบผเบงเบ”เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ‚เบญเบ‡เบ–เบฑเบ‡เบšเบฑเบ™เบˆเบธ เปเบฅเบฐเบ›เบฝเบšเบ—เบฝเบšเบžเบงเบเบกเบฑเบ™เบเบฑเบšเบงเบดเบ—เบตเบญเบทเปˆเบ™เปƒเบ™เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™, เปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ React เป‚เบ”เบเปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡ virtual เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธ.

โ– เบเบฒเบ™เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เป„เบŸเบฅเปŒเบ„เบปเบ‡เบ—เบตเปˆเบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ React เป‚เบ”เบเปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เบชเบฐเป€เปเบทเบญเบ™

เบžเบฐเบเบฒเบเบฒเบกเบˆเบฑเบ”เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ‚เบญเบ‡เป„เบŸเบฅเปŒเบ„เบปเบ‡เบ—เบตเปˆเป‚เบ”เบเปƒเบŠเป‰ virtual machines, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบžเบปเบšเบ‚เปเป‰เป€เบชเบเบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  1. เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบตเปˆเบšเปเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ•เบดเบžเบฒเบš, เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ virtual เปเบ•เปˆเบฅเบฐเบ„เบปเบ™เปเบกเปˆเบ™เบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ—เบตเปˆเป€เบ•เบฑเบกเป„เบ›เบ”เป‰เบงเบเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”.
  2. เบเบฒเบ™เบ‚เบทเป‰เบ™เบเบฑเบšเป€เบงเบ—เบต. เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบญเบฒเบ”เบˆเบฐเบšเปเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบเบฒเบ™เบœเบฐเบฅเบดเบ”.
  3. เบเบฒเบ™เบ›เบฑเบšเบ‚เบฐ เปœเบฒเบ” เบŠเป‰เบฒเปเบฅเบฐเปƒเบŠเป‰เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ‚เบญเบ‡เบงเบดเบ—เบตเปเบเป‰เป„เบ‚เบ—เบตเปˆเบญเบตเบ‡เปƒเบชเปˆเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเบชเบฐเป€เปเบทเบญเบ™.

เบšเบปเบ”เบฎเบฝเบ™ Kubernetes เบชเปˆเบงเบ™เบ—เบต 1: เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™, เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบ เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธ
เป€เบŠเบตเบšเป€เบงเบตเป€เบงเบฑเบš Nginx เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เป„เบŸเบฅเปŒเบ„เบปเบ‡เบ—เบตเปˆเบ—เบตเปˆเปเบฅเปˆเบ™เบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบชเบฐเป€เปเบทเบญเบ™

เบ–เป‰เบฒเป€เบ„เบทเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธเบ–เบทเบเปƒเบŠเป‰เป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เปƒเบ™เบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡ virtual, เบ„เบงเบฒเบกเป€เบ‚เบฑเป‰เบกเปเบ‚เบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™:

  1. เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš: เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป‚เบ”เบเปƒเบŠเป‰ Docker.
  2. เป€เบงเบ—เบตเป€เบญเบเบฐเบฅเบฒเบ”. เบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบตเบ—เบตเปˆเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบชเบฒเบกเบฒเบ”เปเบฅเปˆเบ™เบขเบนเปˆเปƒเบ™เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบ‚เบญเบ‡เบฅเบฒเบงเบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰เบ—เบธเบเบšเปˆเบญเบ™.
  3. เบเบฒเบ™เปƒเบŠเป‰เบ™เป‰เปเบฒเบซเบ™เบฑเบเป€เบšเบปเบฒเป‚เบ”เบเบœเปˆเบฒเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบŠเบฑเป‰เบ™เบฎเบนเบšเบžเบฒเบš.

เบšเบปเบ”เบฎเบฝเบ™ Kubernetes เบชเปˆเบงเบ™เบ—เบต 1: เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™, เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบ เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธ
เป€เบŠเบตเบšเป€เบงเบตเป€เบงเบฑเบš Nginx เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เป„เบŸเบฅเปŒเบ„เบปเบ‡เบ—เบตเปˆเบ—เบตเปˆเปเบฅเปˆเบ™เบขเบนเปˆเปƒเบ™เบ–เบฑเบ‡

เบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเบ›เบฝเบšเบ—เบฝเบšเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ virtual เปเบฅเบฐเบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบตเปƒเบ™เบšเบฒเบ‡เบˆเบธเบ”, เปเบ•เปˆเป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบžเบฝเบ‡เบžเปเบ—เบตเปˆเบˆเบฐเบกเบตเบ„เบงเบฒเบกเบฎเบนเป‰เบชเบถเบเบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเป€เบ‚เบฑเป‰เบกเปเบ‚เบ‡เบ‚เบญเบ‡เบ–เบฑเบ‡. เบกเบฑเบ™เป€เบ›เบฑเบ™ เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบŠเบญเบเบซเบฒเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบเปˆเบฝเบงเบเบฑเบš Docker containers.

โ– เบเบฒเบ™เบชเป‰เบฒเบ‡เบฎเบนเบšเบžเบฒเบšเบšเบฑเบ™เบˆเบธเบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ React

เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡ Docker container เปเบกเปˆเบ™เป„เบŸเบฅเปŒ Dockerfile. เปƒเบ™เบ•เบญเบ™เบ•เบปเป‰เบ™เบ‚เบญเบ‡เป€เบญเบเบฐเบชเบฒเบ™เบ™เบตเป‰, เบšเบฑเบ™เบ—เบถเบเปเบกเปˆเบ™เป€เบฎเบฑเบ”เบˆเบฒเบเบฎเบนเบšเบžเบฒเบšเบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เบ–เบฑเบ‡, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบกเบตเบฅเปเบฒเบ”เบฑเบšเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ—เบตเปˆเบŠเบตเป‰เบšเบญเบเบงเบดเบ—เบตเบเบฒเบ™เบชเป‰เบฒเบ‡เบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบตเบ—เบตเปˆเบˆเบฐเบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™.

เบเปˆเบญเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเป„เบŸเบฅเปŒ Dockerfile, เปƒเบซเป‰เบˆเบทเปˆเบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบฎเบฑเบ”เป€เบžเบทเปˆเบญเบเบฐเบเบฝเบกเป„เบŸเบฅเปŒเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ React เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบญเบฑเบšเป‚เบซเบฅเบ”เป„เบ›เบเบฑเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡ Nginx:

  1. เบเบฒเบ™เบชเป‰เบฒเบ‡เบŠเบธเบ”เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ React (npm run build).
  2. เบเบณเบฅเบฑเบ‡เป€เบฅเบตเปˆเบกเป€เบŠเบตเบšเป€เบงเบต Nginx.
  3. เบ„เบฑเบ”เบฅเบญเบเป€เบ™เบทเป‰เบญเบซเบฒเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต build เบˆเบฒเบเป‚เบŸเบ™เป€เบ”เบตเป‚เบ„เบ‡เบเบฒเบ™ sa-frontend เป„เบ›เบ—เบตเปˆเป‚เบŸเบ™เป€เบ”เบตเป€เบŠเบตเบšเป€เบงเบต nginx/html.

เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบ‚เบฐเบซเบ™เบฒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบชเป‰เบฒเบ‡ container เปเบฅเบฐเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เบ™เบตเป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™.

โ– เบเบณเบฅเบฑเบ‡เบเบฐเบเบฝเบก Dockerfile เบชเบณเบฅเบฑเบšเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ SA-Frontend

เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ—เบตเปˆเบˆเบฐเบšเบฑเบ™เบˆเบธเบขเบนเปˆเปƒเบ™ Dockerfile เบชเบณ เบฅเบฑเบšเบเบฒเบ™เบชเบฐ เปเบฑเบ SA-Frontend, เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบžเบฝเบ‡เปเบ•เปˆเบชเบญเบ‡เบ—เบตเบก. เบ„เบงเบฒเบกเบˆเบดเบ‡เปเบฅเป‰เบงเปเบกเปˆเบ™เบงเปˆเบฒเบ—เบตเบกเบ‡เบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ Nginx เป„เบ”เป‰เบเบฐเบเบฝเบกเบžเบทเป‰เบ™เบ–เบฒเบ™ เบฎเบนเบšเบžเบฒเบš เบชเปเบฒเบฅเบฑเบš Nginx, เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบฎเบนเบšเบžเบฒเบšเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เบ™เบตเป‰เปเบกเปˆเบ™เบชเบญเบ‡เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบญเบฐเบ—เบดเบšเบฒเบ:

  1. เบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เบฎเบนเบšเบžเบฒเบšเบ„เบงเบ™เบˆเบฐเป€เบ›เบฑเบ™เบฎเบนเบšเบžเบฒเบš Nginx.
  2. เป€เบ™เบทเป‰เบญเปƒเบ™เป‚เบŸเบ™เป€เบ”เบต sa-frontend/build เบˆเปเบฒโ€‹เป€เบ›เบฑเบ™โ€‹เบ•เป‰เบญเบ‡โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ„เบฑเบ”โ€‹เบฅเบญเบโ€‹เป„เบ›โ€‹เปƒเบ™โ€‹เป‚เบŸเบ™โ€‹เป€เบ”เบตโ€‹เบฎเบนเบšโ€‹เบžเบฒเบšโ€‹ nginx/html.

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป„เบ›เบˆเบฒเบเบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบ™เบตเป‰เป„เบ›เบซเบฒเป„เบŸเบฅเปŒ Dockerfile, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบกเบฑเบ™เบˆเบฐเป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบ™เบตเป‰:

FROM nginx
COPY build /usr/share/nginx/html

เบ”เบฑเปˆเบ‡เบ—เบตเปˆเป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰, เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰เปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบเบซเบผเบฒเบ, เปเบฅเบฐเป€เบ™เบทเป‰เบญเปƒเบ™เบ‚เบญเบ‡เป„เบŸเบฅเปŒเป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบชเบฒเบกเบฒเบ”เบญเปˆเบฒเบ™เป„เบ”เป‰เปเบฅเบฐเป€เบ‚เบปเป‰เบฒเปƒเบˆเป„เบ”เป‰. เป„เบŸเบฅเปŒเบ™เบตเป‰เบšเบญเบเบฅเบฐเบšเบปเบšเบ—เบตเปˆเบˆเบฐเป€เบญเบปเบฒเบฎเบนเบšเบžเบฒเบš nginx เบเบฑเบšเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบ—เบตเปˆเบกเบตเบขเบนเปˆเปƒเบ™เบกเบฑเบ™, เปเบฅเบฐเบ„เบฑเบ”เบฅเบญเบเป€เบ™เบทเป‰เบญเบซเบฒเบ‚เบญเบ‡เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต build เป„เบ›เบซเบฒเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต nginx/html.

เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบกเบตเบ„เปเบฒเบ–เบฒเบกเบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบ—เบตเปˆเบ‚เป‰เบญเบเบฎเบนเป‰เบงเปˆเบฒเบšเปˆเบญเบ™เปƒเบ”เปเบ—เป‰เบ—เบตเปˆเป€เบˆเบปเป‰เบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบ„เบฑเบ”เบฅเบญเบเป„เบŸเบฅเปŒเบˆเบฒเบเป‚เบŸเบ™เป€เบ”เบต build, เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบšเปˆเบญเบ™เบ—เบตเปˆเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบกเบฒเบˆเบฒเบ /usr/share/nginx/html. เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เบšเปเปˆเบกเบตเบซเบเบฑเบ‡เบชเบฑเบšเบชเบปเบ™เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰. เบ„เบงเบฒเบกเบˆเบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบชเบฒเบกเบฒเบ”เบžเบปเบšเป€เบซเบฑเบ™เบขเบนเปˆเปƒเบ™ เบฅเบฒเบเบฅเบฐเบญเบฝเบ” เบฎเบนเบšเบžเบฒเบš.

โ– เบเบฒเบ™เบชเป‰เบฒเบ‡เบฎเบนเบšเบžเบฒเบšเปเบฅเบฐเบญเบฑเบšเป‚เบซเบฅเบ”เบกเบฑเบ™เปƒเบชเปˆเบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™

เบเปˆเบญเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบฎเบนเบšเบžเบฒเบšเบชเปเบฒเป€เบฅเบฑเบ”เบฎเบนเบš, เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบŠเบธเบเบ”เบฑเบ™เปƒเบซเป‰เบกเบฑเบ™เบเบฑเบš repository เบฎเบนเบšเบžเบฒเบš. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเปƒเบŠเป‰เป€เบงเบ—เบตเบเบฒเบ™เป‚เบฎเบ”เบฎเบนเบšเบžเบฒเบšเป€เบกเบ„เบŸเบฃเบต Docker Hub. เปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ‚เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ™เบตเป‰, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  1. เบ•เบดเบ”เบ•เบฑเป‰เบ‡ Docker.
  2. เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบขเบนเปˆเปƒเบ™เป€เบงเบฑเบšเป„เบŠเบ—เปŒ Docker Hub.
  3. เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบšเบšเบฑเบ™เบŠเบตเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป‚เบ”เบเบเบฒเบ™เปเบฅเปˆเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰เบขเบนเปˆเปƒเบ™ terminal:
    docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD"

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เปƒเบŠเป‰ terminal เป€เบžเบทเปˆเบญเป„เบ›เบ—เบตเปˆเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต sa-frontend เปเบฅเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™:

docker build -f Dockerfile -t $DOCKER_USER_ID/sentiment-analysis-frontend .

เบ—เบตเปˆเบ™เบตเป‰เปเบฅเบฐเบ•เปเปˆเป„เบ›เปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™ $DOCKER_USER_ID เบ„เบงเบ™เบ–เบทเบเปเบ—เบ™เบ—เบตเปˆเบ”เป‰เบงเบเบŠเบทเปˆเบœเบนเป‰เปƒเบŠเป‰ Docker Hub เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡เบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบ™เบตเป‰: rinormaloku/sentiment-analysis-frontend.

เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบ„เปเบฒเบชเบฑเปˆเบ‡เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบชเบฑเป‰เบ™เป‚เบ”เบเบเบฒเบ™เบ–เบญเบ™เบญเบญเบเบˆเบฒเบเบกเบฑเบ™ -f Dockerfile, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเป„เบŸเบฅเปŒเบ™เบตเป‰เบกเบตเบขเบนเปˆเปƒเบ™เป‚เบŸเบ™เป€เบ”เบตเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เปเบฒเบชเบฑเปˆเบ‡เบ™เบตเป‰.

เป€เบžเบทเปˆเบญเบชเบปเปˆเบ‡เบฎเบนเบšเบžเบฒเบšเบชเปเบฒเป€เบฅเบฑเบ”เบฎเบนเบšเป„เบ›เบซเบฒเบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

docker push $DOCKER_USER_ID/sentiment-analysis-frontend

เบซเบผเบฑเบ‡เบˆเบฒเบเป€เบฎเบฑเบ”เบชเบณเป€เบฅเบฑเบ”เปเบฅเป‰เบง, เปƒเบซเป‰เบเบงเบ”เป€เบšเบดเปˆเบ‡เบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปƒเบ™ Docker Hub เป€เบžเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒเบเบฒเบ™เบญเบฑเบšเป‚เบซเบฅเบ”เบฎเบนเบšเบžเบฒเบšเป„เบ›เปƒเบชเปˆเบšเปˆเบญเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบ„เบฅเบฒเบงเบชเบณเป€เบฅเบฑเบ”เบซเบผเบทเบšเปเปˆ.

โ–เปเบฅเปˆเบ™เบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบต

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ—เบธเบเบ„เบปเบ™เบชเบฒเบกเบฒเบ”เบ”เบฒเบงเบ™เปŒเป‚เบซเบฅเบ”เปเบฅเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบฎเบนเบšเบžเบฒเบš, เป€เบญเบตเป‰เบ™เบงเปˆเบฒ $DOCKER_USER_ID/sentiment-analysis-frontend. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

docker pull $DOCKER_USER_ID/sentiment-analysis-frontend
docker run -d -p 80:80 $DOCKER_USER_ID/sentiment-analysis-frontend

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบตเบเปเบฒเบฅเบฑเบ‡เปเบฅเปˆเบ™, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบชเบทเบšเบ•เปเปˆเป€เบฎเบฑเบ”เบงเบฝเบเป‚เบ”เบเบเบฒเบ™เบชเป‰เบฒเบ‡เบฎเบนเบšเบžเบฒเบšเบญเบทเปˆเบ™เป†เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™. เปเบ•เปˆเบเปˆเบญเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเบทเบšเบ•เปเปˆ, เปƒเบซเป‰เป€เบ‚เบปเป‰เบฒเปƒเบˆเบเบฒเบ™เบญเบญเบเปเบšเบš 80:80, เป€เบŠเบดเปˆเบ‡เบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เป€เบ›เบตเบ”เบ•เบปเบงเบฎเบนเบšเบžเบฒเบšเปเบฅเบฐเบญเบฒเบ”เบˆเบฐเป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบชเบฑเบšเบชเบปเบ™.

  • เป€เบฅเบ เบ—เบณ เบญเบดเบ” 80 โ€” เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เป€เบฅเบโ€‹เบžเบญเบ”โ€‹เปเบกเปˆโ€‹เบ‚เปˆเบฒเบ (เบ™เบฑเป‰เบ™โ€‹เปเบกเปˆเบ™โ€‹, เบ„เบญเบกโ€‹เบžเบดเบงโ€‹เป€เบ•เบตโ€‹เบ—เป‰เบญเบ‡โ€‹เบ–เบดเปˆเบ™โ€‹)โ€‹.
  • เบ•เบปเบงเป€เบฅเบเบ—เบตเบชเบญเบ‡ 80 เปเบกเปˆเบ™เบ—เปˆเบฒเป€เบฎเบทเบญเบ‚เบญเบ‡เบ–เบฑเบ‡เบ—เบตเปˆเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ„เบงเบ™เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเบปเปˆเบ‡เบ•เปเปˆ.

เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบ•เบปเบงเบขเปˆเบฒเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰.

เบšเบปเบ”เบฎเบฝเบ™ Kubernetes เบชเปˆเบงเบ™เบ—เบต 1: เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™, เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบ เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธ
เบเบฒเบ™เบชเบปเปˆเบ‡เบ•เปเปˆเบžเบญเบ”

เบฅเบฐเบšเบปเบšเบ›เปˆเบฝเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบˆเบฒเบเบžเบญเบ” <hostPort> เป„เบ›เบ—เบตเปˆเบ—เปˆเบฒเป€เบฎเบทเบญ <containerPort>. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ—เปˆเบฒเป€เบฎเบทเบญ 80 เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบ–เบทเบเป‚เบญเบ™เป„เบ›เบซเบฒเบžเบญเบ” 80 เบšเบฑเบ™เบˆเบธ.

เบ•เบฑเป‰เบ‡เปเบ•เปˆเบ—เปˆเบฒเป€เบฎเบทเบญ 80 เป€เบ›เบตเบ”เบขเบนเปˆเปƒเบ™เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบˆเบฒเบเบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบ™เบตเป‰เบขเบนเปˆเบ—เบตเปˆ localhost:80. เบ–เป‰เบฒเบฅเบฐเบšเบปเบšเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบšเปเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ Docker, เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡ virtual Docker, เบ—เบตเปˆเบขเบนเปˆเบ‚เบญเบ‡เบกเบฑเบ™เบˆเบฐเป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒ. <docker-machine ip>:80. เป€เบžเบทเปˆเบญเบŠเบญเบเบซเบฒเบ—เบตเปˆเบขเบนเปˆ IP เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡ virtual Docker, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡ docker-machine ip.

เปƒเบ™เบˆเบธเบ”เบ™เบตเป‰, เบซเบผเบฑเบ‡เบˆเบฒเบเบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”เบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเบเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ”เป‰เบฒเบ™เบซเบ™เป‰เบฒ, เบ—เปˆเบฒเบ™เบ„เบงเบ™เบˆเบฐเบชเบฒเบกเบฒเบ”เป€เบ›เบตเบ”เบซเบ™เป‰เบฒเบ‚เบญเบ‡เบกเบฑเบ™เบขเบนเปˆเปƒเบ™เบ•เบปเบงเบ—เปˆเบญเบ‡เป€เบงเบฑเบš.

โ–เป„เบŸเบฅเปŒ .dockerignore

เบเบฒเบ™โ€‹เป€เบเบฑเบšโ€‹เบเปเบฒโ€‹เบฎเบนเบšโ€‹เบžเบฒเบšโ€‹เบ‚เบญเบ‡โ€‹เบ„เปเบฒโ€‹เบฎเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบฑเบโ€‹ SA-Frontend, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบงเปˆเบฒเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ™เบตเป‰เบเบฒเบเป€เบ›เบฑเบ™เบŠเป‰เบฒเบ—เบตเปˆเบชเบธเบ”. เบญเบฑเบ™เบ™เบตเป‰เป€เบเบตเบ”เบ‚เบถเป‰เบ™เป€เบžเบฒเบฐเบงเปˆเบฒ เบšเปเบฅเบดเบšเบปเบ”เบเบฒเบ™เบชเป‰เบฒเบ‡เบฎเบนเบšเบžเบฒเบšเบ•เป‰เบญเบ‡เบ–เบทเบเบชเบปเปˆเบ‡เป„เบ›เบซเบฒ Docker daemon. เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡เบเบฒเบ™เบชเป‰เบฒเบ‡เบšเปเบฅเบดเบšเบปเบ”เปเบกเปˆเบ™เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป€เบ›เบฑเบ™เบญเบฒเบเบดเบงเป€เบกเบฑเบ™เบชเบธเบ”เบ—เป‰เบฒเบเบ‚เบญเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡ docker build. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบกเบตเบˆเบธเบ”เบขเบนเปˆเปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบเบ‚เบญเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡เบ™เบตเป‰. เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰เบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™เบชเบฐเบžเบฒเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡:

sa-frontend:
|   .dockerignore
|   Dockerfile
|   package.json
|   README.md
+---build
+---node_modules
+---public
---src

เปเบ•เปˆเปƒเบ™เบ—เบธเบเป‚เบŸเบ™เป€เบ”เบตเบ—เบตเปˆเบชเบฐเปเบ”เบ‡เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเป‚เบŸเบ™เป€เบ”เบตเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™ build. เบเบฒเบ™เป‚เบซเบผเบ”เบชเบดเปˆเบ‡เบญเบทเปˆเบ™เปเบกเปˆเบ™เป€เบชเบเป€เบงเบฅเบฒ. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฅเบฑเปˆเบ‡เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เป‚เบ”เบเบเบฒเบ™เบšเบญเบ Docker เบงเปˆเบฒเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเปƒเบ”เบ—เบตเปˆเบˆเบฐเบšเปเปˆเบชเบปเบ™เปƒเบˆ. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เป„เบŸเบฅเปŒ .dockerignore. เบ—เปˆเบฒเบ™, เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบ—เปˆเบฒเบ™เบกเบตเบ„เบงเบฒเบกเบ„เบธเป‰เบ™เป€เบ„เบตเบเบเบฑเบšเป„เบŸเบฅเปŒ .gitignore, เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เบญเบ‡เป„เบŸเบฅเปŒเบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบ„เบธเป‰เบ™เป€เบ„เบตเบ. เบกเบฑเบ™เบฅเบฒเบเบŠเบทเปˆเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเบฅเบฐเบšเบปเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เบฎเบนเบšเบžเบฒเบšเบชเบฒเบกเบฒเบ”เบฅเบฐเป€เบฅเบตเบ. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เป€เบ™เบทเป‰เบญเปƒเบ™เบ‚เบญเบ‡เป„เบŸเบฅเปŒเบ™เบตเป‰เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒ:

node_modules
src
public

เป€เบญเบเบฐเบชเบฒเบ™ .dockerignore เบ•เป‰เบญเบ‡เบขเบนเปˆเปƒเบ™เป‚เบŸเบ™เป€เบ”เบตเบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเป„เบŸเบฅเปŒ Dockerfile. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เบฎเบนเบšเบžเบฒเบšเบˆเบฐเปƒเบŠเป‰เป€เบงเบฅเบฒเบšเปเปˆเป€เบ—เบปเปˆเบฒเปƒเบ”เบงเบดเบ™เบฒเบ—เบต.

เบ•เบญเบ™เบ™เบตเป‰เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เบงเบฝเบเบเปˆเบฝเบงเบเบฑเบšเบฎเบนเบšเบžเบฒเบšเบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ Java.

โ– เบเบฒเบ™เบชเป‰เบฒเบ‡เบฎเบนเบšเบžเบฒเบšเบšเบฑเบ™เบˆเบธเบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ Java

เป€เบˆเบปเป‰เบฒเบฎเบนเป‰เบซเบเบฑเบ‡, เบ—เปˆเบฒเบ™เป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบ—เบธเบเบขเปˆเบฒเบ‡เบ—เบตเปˆเป€เบˆเบปเป‰เบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบฎเบนเป‰เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบฎเบนเบšเบžเบฒเบšเบšเบฑเบ™เบˆเบธ. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™เป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆเบงเปˆเบฒเบžเบฒเบเบ™เบตเป‰เบˆเบฐเบชเบฑเป‰เบ™เบซเบผเบฒเบ.

เป€เบ›เบตเบ”เป„เบŸเบฅเปŒ Dockerfileเป€เบŠเบดเปˆเบ‡เบขเบนเปˆเปƒเบ™เป‚เบŸเบ™เป€เบ”เบตเป‚เบ„เบ‡เบเบฒเบ™ sa-webapp. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบญเปˆเบฒเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเบ‚เบญเบ‡เป„เบŸเบฅเปŒเบ™เบตเป‰, เบ—เปˆเบฒเบ™เบˆเบฐเป€เบซเบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเบชเบญเบ‡เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปƒเบซเบกเปˆเปƒเบ™เบกเบฑเบ™, เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเบ„เปเบฒเบชเปเบฒเบ„เบฑเบ™ ENV ะธ EXPOSE:

ENV SA_LOGIC_API_URL http://localhost:5000
โ€ฆ
EXPOSE 8080

เบ„เปเบฒเบชเปเบฒเบ„เบฑเบ™ ENV เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบ›เบฐเบเบฒเบ”เบ•เบปเบงเปเบ›เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบžเบฒเบเปƒเบ™ Docker containers. เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ, เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบกเบฑเบ™เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบฅเบฐเบšเบธ URL เป€เบžเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ API เบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ‚เปเป‰เบ„เบงเบฒเบก.

เบ„เปเบฒเบชเปเบฒเบ„เบฑเบ™ EXPOSE เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบšเบญเบ Docker เปƒเบซเป‰เป€เบ›เบตเบ”เบžเบญเบ”. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเปƒเบŠเป‰เบžเบญเบ”เบ™เบตเป‰เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเปเบฅเปˆเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™. เบ—เบตเปˆเบ™เบตเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบงเปˆเบฒเปƒเบ™ Dockerfile เบชเบณ เบฅเบฑเบšเบเบฒเบ™เบชเบฐ เปเบฑเบ SA-Frontend เบšเปเปˆเบกเบตเบ„เปเบฒเบชเบฑเปˆเบ‡เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง. เบ™เบตเป‰เปเบกเปˆเบ™เบžเบฝเบ‡เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เป€เบญเบเบฐเบชเบฒเบ™, เปƒเบ™เบ„เปเบฒเบชเบฑเบšเบ•เปˆเบฒเบ‡เป†เบญเบทเปˆเบ™เป†, เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ™เบตเป‰เปเบกเปˆเบ™เบกเบตเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบ—เบตเปˆเบˆเบฐเบญเปˆเบฒเบ™ Dockerfile.

เบเบฒเบ™เบชเป‰เบฒเบ‡เบฎเบนเบšเบžเบฒเบšเปเบฅเบฐเบเบนเป‰เบกเบฑเบ™เป„เบ›เบซเบฒเบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบ„เบทเบเบฑเบ™เบเบฑเบšเปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบเบฑเบ‡เบšเปเปˆเบซเบกเบฑเป‰เบ™เปƒเบˆเปƒเบ™เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™, เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™เบชเบฒเบกเบฒเบ”เบžเบปเบšเป„เบ”เป‰เปƒเบ™เป„เบŸเบฅเปŒ README.md เปƒเบ™เป‚เบŸเบ™เป€เบ”เบต sa-webapp.

โ– เบเบฒเบ™เบชเป‰เบฒเบ‡เบฎเบนเบšเบžเบฒเบšเบšเบฑเบ™เบˆเบธเบชเปเบฒเบฅเบฑเบšเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ Python

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบšเบดเปˆเบ‡เป€เบ™เบทเป‰เบญเปƒเบ™เบ‚เบญเบ‡เป€เบญเบเบฐเบชเบฒเบ™ Dockerfile เปƒเบ™เป‚เบŸเบ™เป€เบ”เบต sa-logic, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบˆเบฐเบšเปเปˆเบžเบปเบšเบชเบดเปˆเบ‡เปƒเบซเบกเปˆเบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบ—เปˆเบฒเบ™เป€เบญเบ‡เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™. เบ„เปเบฒเบชเบฑเปˆเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบฎเบนเบšเบžเบฒเบšเปเบฅเบฐเบชเบปเปˆเบ‡เบกเบฑเบ™เป„เบ› repository เบ„เบงเบ™เบˆเบฐเบ„เบธเป‰เบ™เป€เบ„เบตเบเบเบฑเบšเบ—เปˆเบฒเบ™เปเบฅเป‰เบง, เปเบ•เปˆ, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบญเบทเปˆเบ™เป†เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เบžเบปเบšเป€เบซเบฑเบ™เบขเบนเปˆเปƒเบ™เป„เบŸเบฅเปŒ. README.md เปƒเบ™เป‚เบŸเบ™เป€เบ”เบต sa-logic.

โ– เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบšเบฑเบ™เบˆเบธ

เป€เบˆเบปเป‰เบฒเป€เบŠเบทเปˆเบญเบšเบฒเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบˆเบปเป‰เบฒเบšเปเปˆเป„เบ”เป‰เบ—เบปเบ”เบชเบญเบšเป„เบ”เป‰เบšเป? เบ‚เป‰เบญเบเบšเปเปˆเบชเบฒเบกเบฒเบ”เบ„เบทเบเบฑเบ™. เบกเบฒเบ—เบปเบ”เบชเบญเบšเบ–เบฑเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ.

  1. เปƒเบซเป‰เป€เบ›เบตเบ”เบ•เบปเบงเบšเบฑเบ™เบˆเบธเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ sa-logic เปเบฅเบฐเบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบกเบฑเบ™เป€เบžเบทเปˆเบญเบŸเบฑเบ‡เบขเบนเปˆเปƒเบ™เบžเบญเบ” 5050:
    docker run -d -p 5050:5000 $DOCKER_USER_ID/sentiment-analysis-logic
  2. เปƒเบซเป‰เป€เบ›เบตเบ”เบ•เบปเบงเบšเบฑเบ™เบˆเบธเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ sa-webapp เปเบฅเบฐเบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบกเบฑเบ™เป€เบžเบทเปˆเบญเบŸเบฑเบ‡เบขเบนเปˆเปƒเบ™เบžเบญเบ” 8080. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบเปเบฒเบซเบ™เบปเบ”เบ„เปˆเบฒเบžเบญเบ”เบ—เบตเปˆเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ Python เบˆเบฐเบŸเบฑเบ‡เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบˆเบฒเบเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ Java เป‚เบ”เบเบเบฒเบ™เบกเบญเบšเบซเบกเบฒเบเบ•เบปเบงเปเบ›เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ„เบทเบ™เปƒเบซเบกเปˆ. SA_LOGIC_API_URL:
    $ docker run -d -p 8080:8080 -e SA_LOGIC_API_URL='http://<container_ip or docker machine ip>:5000' $DOCKER_USER_ID/sentiment-analysis-web-app

เป€เบžเบทเปˆเบญเบฎเบฝเบ™เบฎเบนเป‰เบงเบดเบ—เบตเบเบฒเบ™เบŠเบญเบเบซเบฒเบ—เบตเปˆเบขเบนเปˆ IP เบ‚เบญเบ‡ Docker container เบซเบผเบท virtual machine, เป€เบšเบดเปˆเบ‡เป„เบŸเบฅเปŒ README.

เปƒเบซเป‰เป€เบ›เบตเบ”เบ•เบปเบงเบšเบฑเบ™เบˆเบธเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ sa-frontend:

docker run -d -p 80:80 $DOCKER_USER_ID/sentiment-analysis-frontend

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบเบฝเบกเบžเป‰เบญเบกเบ—เบตเปˆเบˆเบฐเป„เบ›เบซเบฒเบ—เบตเปˆเบขเบนเปˆเปƒเบ™เบ•เบปเบงเบ—เปˆเบญเบ‡เป€เบงเบฑเบš localhost:80 เปเบฅเบฐเบžเบฐเบเบฒเบเบฒเบกเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ.

เบเบฐเบฅเบธเบ™เบฒเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ›เปˆเบฝเบ™เบžเบญเบ”เบชเปเบฒเบฅเบฑเบš sa-webapp, เบซเบผเบทเบ–เป‰เบฒเบ—เปˆเบฒเบ™เปƒเบŠเป‰ Docker virtual machine, เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เปเบเป‰เป„เบ‚เป„เบŸเบฅเปŒ App.js เบˆเบฒเบเป‚เบŸเบ™เป€เบ”เบต sa-frontendเป‚เบ”เบเบเบฒเบ™เบ›เปˆเบฝเบ™เบ—เบตเปˆเบขเบนเปˆ IP เบซเบผเบทเปเบฒเบเป€เบฅเบเบžเบญเบ”เปƒเบ™เบงเบดเบ—เบตเบเบฒเบ™ analyzeSentence(), เบเบฒเบ™เบ—เบปเบ”เปเบ—เบ™เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบ‚เปเป‰เบกเบนเบ™เบฅเป‰เบฒเบชเบฐเป„เบซเบก. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบตเป‰, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ›เบฐเบเบญเบšเบฎเบนเบšเบžเบฒเบšเปเบฅเบฐเบ™เปเบฒเปƒเบŠเป‰เบกเบฑเบ™.

เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเปเบœเบ™เบงเบฒเบ”เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™.

เบšเบปเบ”เบฎเบฝเบ™ Kubernetes เบชเปˆเบงเบ™เบ—เบต 1: เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™, เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบ เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธ
เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบ™เบฅเบฐเบžเบฒเบเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบขเบนเปˆเปƒเบ™เบšเบฑเบ™เบˆเบธ

เบชเบฐเบซเบผเบธเบš: เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบธเปˆเบก Kubernetes?

เบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเป„เบ”เป‰เบเบงเบ”เบเบฒเป„เบŸเบฅเปŒ Dockerfile, เป„เบ”เป‰เป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบชเป‰เบฒเบ‡เบฎเบนเบšเบžเบฒเบšเปเบฅเบฐเบŠเบธเบเบ”เบฑเบ™เปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒเป„เบ›เบซเบฒเบšเปˆเบญเบ™เป€เบเบฑเบš Docker. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบงเบดเบ—เบตเบเบฒเบ™เป€เบฅเบฑเปˆเบ‡เบเบฒเบ™เบ›เบฐเบเบญเบšเบฎเบนเบšเบžเบฒเบšเป‚เบ”เบเปƒเบŠเป‰เป„เบŸเบฅเปŒ .dockerignore. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบ™เบฅเบฐเบžเบฒเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบขเบนเปˆเปƒเบ™ Docker containers. เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบกเบตเบ„เปเบฒเบ–เบฒเบกเบ—เบตเปˆเบชเบปเบกเป€เบซเบ”เบชเบปเบกเบœเบปเบ™เบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบงเปˆเบฒเป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™ Kubernetes. เบชเปˆเบงเบ™เบ—เบตเบชเบญเบ‡เบ‚เบญเบ‡เป€เบญเบเบฐเบชเบฒเบ™เบ™เบตเป‰เบˆเบฐเบ–เบทเบเบญเบธเบ—เบดเบ”เปƒเบซเป‰เบเบฑเบšเบเบฒเบ™เบ•เบญเบšเบ„เปเบฒเบ–เบฒเบกเบ™เบตเป‰. เปƒเบ™เป€เบงเบฅเบฒเบ™เบตเป‰, เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบ„เปเบฒเบ–เบฒเบกเบ•เปเปˆเป„เบ›เบ™เบตเป‰:
เปƒเบซเป‰เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป€เบงเบฑเบšเป„เบŠเบ•เปŒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ‚เปเป‰เบ„เบงเบฒเบกเป„เบ”เป‰เบเบฒเบเป€เบ›เบฑเบ™เบ—เบตเปˆเบ™เบดเบเบปเบกเบ—เบปเปˆเบงเป‚เบฅเบ. เบซเบผเบฒเบเบฅเป‰เบฒเบ™เบ„เบณเบฎเป‰เบญเบ‡เบ‚เปเบกเบฒเบซเบฒเบฅเบฒเบงเบ—เบธเบเบ™เบฒเบ—เบต. เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒ microservices sa-webapp ะธ sa-logic เบˆเบฐเบขเบนเปˆเบžเบฒเบเปƒเบ•เป‰เบเบฒเบ™เป‚เบซเบผเบ”เบญเบฑเบ™เปƒเบซเบเปˆเบซเบผเบงเบ‡. เบงเบดเบ—เบตเบเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบตเบ—เบตเปˆเปƒเบŠเป‰ microservices?

เบšเบปเบ”เบฎเบฝเบ™ Kubernetes เบชเปˆเบงเบ™เบ—เบต 1: เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™, เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบ เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธ

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™