เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชŸเซเชฏเซเชŸเซ‹เชฐเซ€เชฏเชฒ เชญเชพเช— 1: เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธ, เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธเชฟเชธ เช…เชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ

เช…เชฎเชพเชฐเซ€ เชตเชฟเชจเช‚เชคเซ€ เชชเชฐ, เชนเชฌเชฐเซ‡ เชเช• เชนเชฌ เชฌเชจเชพเชตเซเชฏเซเช‚ เช•เซเชฏเซเชฌเชฐเซเชจเซ‡เชŸเชฟเชธ เช…เชจเซ‡ เช…เชฎเซ‡ เชคเซ‡เชฎเชพเช‚ เชชเซเชฐเชฅเชฎ เชชเซเชฐเช•เชพเชถเชจ เชฎเซ‚เช•เซ€เชจเซ‡ เช–เซเชถ เช›เซ€เช. เชธเชฌเซเชธเซเช•เซเชฐเชพเช‡เชฌ เช•เชฐเซ‹!

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชธเชฐเชณ เช›เซ‡. เชถเชพ เชฎเชพเชŸเซ‡ เชฌเซ‡เช‚เช•เซ‹ เชฎเชจเซ‡ เช† เช•เซเชทเซ‡เชคเซเชฐเชฎเชพเช‚ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช˜เชฃเชพ เชชเซˆเชธเชพ เชšเซ‚เช•เชตเซ‡ เช›เซ‡, เชœเซเชฏเชพเชฐเซ‡ เช•เซ‹เชˆ เชชเชฃ เชตเซเชฏเช•เซเชคเชฟ เชฎเชพเชคเซเชฐ เชฅเซ‹เชกเชพ เช•เชฒเชพเช•เซ‹เชฎเชพเช‚ เช† เชคเช•เชจเซ€เช•เชฎเชพเช‚ เชจเชฟเชชเซเชฃเชคเชพ เชฎเซ‡เชณเชตเซ€ เชถเช•เซ‡ เช›เซ‡?

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชŸเซเชฏเซเชŸเซ‹เชฐเซ€เชฏเชฒ เชญเชพเช— 1: เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธ, เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธเชฟเชธ เช…เชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ

เชœเซ‹ เชคเชฎเชจเซ‡ เชถเช‚เช•เชพ เช›เซ‡ เช•เซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เช†เชŸเชฒเซ€ เชเชกเชชเชฅเซ€ เชถเซ€เช–เซ€ เชถเช•เชพเชฏ เช›เซ‡, เชคเซ‹ เชนเซเช‚ เชธเซ‚เชšเชจ เช•เชฐเซเช‚ เช›เซเช‚ เช•เซ‡ เชคเชฎเซ‡ เชคเซ‡เชจเซ‡ เชœเชพเชคเซ‡ เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ‹. เชเชŸเชฒเซ‡ เช•เซ‡, เช† เชธเชพเชฎเช—เซเชฐเซ€เชฎเชพเช‚ เชจเชฟเชชเซเชฃเชคเชพ เชชเซเชฐเชพเชชเซเชค เช•เชฐเซเชฏเชพ เชชเช›เซ€, เชคเชฎเซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธเชฟเชธ เชชเชฐ เช†เชงเชพเชฐเชฟเชค เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชธเช•เซเชทเชฎ เชนเชถเซ‹. เชนเซเช‚ เช†เชจเซ€ เชฌเชพเช‚เชฏเชงเชฐเซ€ เช†เชชเซ€ เชถเช•เซเช‚ เช›เซเช‚, เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡ เช เชœ เชชเชฆเซเชงเชคเชฟเชฎเชพเช‚ เช›เซ‡ เชœเซ‡เชจเซ‹ เชนเซเช‚ เช…เชนเซ€เช‚ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเช‚ เช›เซเช‚ เช•เซ‡ เชนเซเช‚ เช…เชฎเชพเชฐเชพ เช—เซเชฐเชพเชนเช•เซ‹เชจเซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชธเชพเชฅเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฎ เช•เชฐเชตเซเช‚ เชคเซ‡ เชถเซ€เช–เชตเซเช‚ เช›เซเช‚. เช† เชฎเชพเชฐเซเช—เชฆเชฐเซเชถเชฟเช•เชพ เช…เชจเซเชฏ เชฒเซ‹เช•เซ‹เชฅเซ€ เชถเซเช‚ เช…เชฒเช— เชฌเชจเชพเชตเซ‡ เช›เซ‡? เช–เชฐเซ‡เช–เชฐ, เช˜เชฃเซ€ เชฌเชงเซ€ เชตเชธเซเชคเซเช“. เชคเซ‡เชฅเซ€, เช†เชฎเชพเช‚เชจเซ€ เชฎเซ‹เชŸเชพเชญเชพเช—เชจเซ€ เชธเชพเชฎเช—เซเชฐเซ€เช“ เชธเชฐเชณ เชตเชธเซเชคเซเช“เชจเชพ เชธเชฎเชœเซ‚เชคเซ€เชฅเซ€ เชถเชฐเซ‚ เชฅเชพเชฏ เช›เซ‡ - เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชจเซ€ เชตเชฟเชญเชพเชตเชจเชพเช“ เช…เชจเซ‡ เช•เซเชฏเซเชฌเซ‡เช•เซเชŸเชฒ เช†เชฆเซ‡เชถเชจเซ€ เชตเชฟเชถเซ‡เชทเชคเชพเช“. เช† เชฒเซ‡เช–เซ‹เชจเชพ เชฒเซ‡เช–เช•เซ‹ เชงเชพเชฐเซ‡ เช›เซ‡ เช•เซ‡ เชคเซ‡เชฎเชจเชพ เชตเชพเชšเช• เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชกเซ‡เชตเชฒเชชเชฎเซ‡เชจเซเชŸ, เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธเชฟเชธ เช…เชจเซ‡ เชกเซ‹เช•เชฐ เช•เชจเซเชŸเซ‡เชจเชฐเชฅเซ€ เชชเชฐเชฟเชšเชฟเชค เช›เซ‡. เช†เชชเชฃเซ‡ เชฌเซ€เชœเซ€ เชฐเซ€เชคเซ‡ เชœเชˆเชถเซเช‚. เชชเซเชฐเชฅเชฎ, เชšเชพเชฒเซ‹ เช•เชฎเซเชชเซเชฏเซเชŸเชฐ เชชเชฐ เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธเชฟเชธ เชชเชฐ เช†เชงเชพเชฐเชฟเชค เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชšเชฒเชพเชตเชตเซ€ เชคเซ‡ เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซ€เช. เชชเช›เซ€ เช†เชชเชฃเซ‡ เชฆเชฐเซ‡เช• เชฎเชพเชˆเช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธ เชฎเชพเชŸเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เชˆเชฎเซ‡เชœเซ€เชธเชจเซเช‚ เชจเชฟเชฐเซเชฎเชพเชฃ เช•เชฐเซ€เชถเซเช‚. เช…เชจเซ‡ เชคเซ‡ เชชเช›เซ€, เช…เชฎเซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชธเชพเชฅเซ‡ เชชเชฐเชฟเชšเชฟเชค เชฅเชˆเชถเซเช‚ เช…เชจเซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชฆเซเชตเชพเชฐเชพ เชธเช‚เชšเชพเชฒเชฟเชค เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธเชฟเชธ เชชเชฐ เช†เชงเชพเชฐเชฟเชค เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ€ เชœเชฎเชพเชตเชŸเชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเซ€เชถเซเช‚.

เช† เช…เชญเชฟเช—เชฎ, เช•เซเชฌเชฐเชจเซ‡เชŸเซ€เชธ เชชเซเชฐเชคเซเชฏเซ‡ เช•เซเชฐเชฎเชถเชƒ เช…เชญเชฟเช—เชฎ เชธเชพเชฅเซ‡, เชถเซเช‚ เชฅเชˆ เชฐเชนเซเชฏเซเช‚ เช›เซ‡ เชคเซ‡เชจเซ€ เชธเชฎเชœเชฃเชจเซ€ เชŠเช‚เชกเชพเชˆ เช†เชชเชถเซ‡ เชœเซ‡เชจเซ€ เชธเชฐเซ‡เชฐเชพเชถ เชตเซเชฏเช•เซเชคเชฟเช เช•เซเชฌเชฐเชจเซ‡เชŸเซ€เชธเชฎเชพเช‚ เชฌเชงเซเช‚ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช—เซ‹เช เชตเซ‡เชฒ เช›เซ‡ เชคเซ‡ เชธเชฎเชœเชตเชพ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡. Kubernetes เชšเซ‹เช•เซเช•เชธเชชเชฃเซ‡ เชเช• เชธเชฐเชณ เชคเช•เชจเซ€เช• เช›เซ‡, เชœเซ‹ เช•เซ‡ เชœเซ‡ เชคเซ‡เชจเซ‡ เชฎเชพเชธเซเชŸเชฐ เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ‡ เช›เซ‡ เชคเซ‡ เชœเชพเชฃเซ‡ เช›เซ‡ เช•เซ‡ เชคเซ‡เชจเซ‹ เช•เซเชฏเชพเช‚ เช…เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช‰เชชเชฏเซ‹เช— เชฅเชพเชฏ เช›เซ‡.

เชนเชตเซ‡, เชตเชงเซ เช…เชกเชšเชฃ เชตเชฟเชจเชพ, เชšเชพเชฒเซ‹ เช•เชพเชฎ เชชเชฐ เชœเชˆเช เช…เชจเซ‡ เช…เชฎเซ‡ เชœเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเซ€เชถเซเช‚ เชคเซ‡เชจเชพ เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซ€เช.

เชชเซเชฐเชพเชฏเซ‹เช—เชฟเช• เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ

เช…เชฎเชพเชฐเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฎเชพเชคเซเชฐ เชเช• เชœ เช•เชพเชฐเซเชฏ เช•เชฐเชถเซ‡. เชคเซ‡ เช‡เชจเชชเซเชŸ เชคเชฐเซ€เช•เซ‡, เชเช• เชตเชพเช•เซเชฏ เชฒเซ‡ เช›เซ‡, เชคเซ‡ เชชเช›เซ€, เชŸเซ‡เช•เซเชธเซเชŸ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เชธเชพเชงเชจเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡, เชคเซ‡ เช† เชตเชพเช•เซเชฏเชจเซเช‚ เชญเชพเชตเชจเชพเชคเซเชฎเช• เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเซ‡ เช›เซ‡, เชตเชพเช•เซเชฏเชจเชพ เชฒเซ‡เช–เช•เชจเชพ เชšเซ‹เช•เซเช•เชธ เช‘เชฌเซเชœเซ‡เช•เซเชŸ เชชเซเชฐเชคเซเชฏเซ‡เชจเชพ เชญเชพเชตเชจเชพเชคเซเชฎเช• เชตเชฒเชฃเชจเซเช‚ เชฎเซ‚เชฒเซเชฏเชพเช‚เช•เชจ เชฎเซ‡เชณเชตเซ‡ เช›เซ‡.

เช† เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ€ เชฎเซเช–เซเชฏ เชตเชฟเช‚เชกเซ‹ เช†เชจเชพ เชœเซ‡เชตเซ€ เชฆเซ‡เช–เชพเชฏ เช›เซ‡.

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชŸเซเชฏเซเชŸเซ‹เชฐเซ€เชฏเชฒ เชญเชพเช— 1: เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธ, เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธเชฟเชธ เช…เชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ
เชธเซ‡เชจเซเชŸเชฟเชฎเซ‡เชจเซเชŸ เชเชจเชพเชฒเชฟเชธเชฟเชธ เชตเซ‡เชฌ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ

เชคเช•เชจเซ€เช•เซ€ เชฆเซƒเชทเซเชŸเชฟเช•เซ‹เชฃเชฅเซ€, เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชฎเชพเช‚ เชคเซเชฐเชฃ เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธเชฟเชธเชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡, เชœเซ‡เชฎเชพเช‚เชฅเซ€ เชชเซเชฐเชคเซเชฏเซ‡เช• เช•เชพเชฐเซเชฏเซ‹เชจเชพ เชšเซ‹เช•เซเช•เชธ เชธเซ‡เชŸเชจเซ‡ เชนเชฒ เช•เชฐเซ‡ เช›เซ‡:

  • SA-เชซเซเชฐเชจเซเชŸเซ‡เชจเซเชก เช Nginx เชตเซ‡เชฌ เชธเชฐเซเชตเชฐ เช›เซ‡ เชœเซ‡ เชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ เชธเซเชฅเชฟเชฐ เชซเชพเช‡เชฒเซ‹เชจเซ‡ เชธเซ‡เชตเชพ เช†เชชเซ‡ เช›เซ‡.
  • SA-WebApp เช Java เชฎเชพเช‚ เชฒเช–เซ‡เชฒเซ€ เชตเซ‡เชฌ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช›เซ‡ เชœเซ‡ เชซเซเชฐเชจเซเชŸ เชเชจเซเชกเชจเซ€ เชตเชฟเชจเช‚เชคเซ€เช“เชจเซเช‚ เชธเช‚เชšเชพเชฒเชจ เช•เชฐเซ‡ เช›เซ‡.
  • SA-Logic เช เชชเชพเชฏเชฅเซ‹เชจ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช›เซ‡ เชœเซ‡ เชŸเซ‡เช•เซเชธเซเชŸ เชธเซ‡เชจเซเชŸเชฟเชฎเซ‡เชจเซเชŸ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเซ‡ เช›เซ‡.

เช เชจเซ‹เช‚เชงเชตเซเช‚ เช…เช—เชคเซเชฏเชจเซเช‚ เช›เซ‡ เช•เซ‡ เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธเชฟเชธ เชเช•เชฒเชคเชพเชฎเชพเช‚ เช…เชธเซเชคเชฟเชคเซเชตเชฎเชพเช‚ เชจเชฅเซ€. เชคเซ‡เช“ "เชซเชฐเชœเซ‹เชจเชพ เชตเชฟเชญเชพเชœเชจ" เชจเชพ เชตเชฟเชšเชพเชฐเชจเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡เช“, เชคเซ‡ เชœ เชธเชฎเชฏเซ‡, เชเช•เชฌเซ€เชœเชพ เชธเชพเชฅเซ‡ เช•เซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชŸเซเชฏเซเชŸเซ‹เชฐเซ€เชฏเชฒ เชญเชพเช— 1: เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธ, เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธเชฟเชธ เช…เชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ
เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชฎเชพเช‚ เชกเซ‡เชŸเชพ เชตเชนเซ‡ เช›เซ‡

เช‰เชชเชฐเซ‹เช•เซเชค เชฐเซ‡เช–เชพเช•เซƒเชคเชฟเชฎเชพเช‚, เชคเชฎเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชฎเชพเช‚ เชกเซ‡เชŸเชพเชจเชพ เชชเซเชฐเชตเชพเชนเชจเซ‡ เชฆเชฐเซเชถเชพเชตเชคเชพ, เชธเชฟเชธเซเชŸเชฎเชจเชพ เช•เซเชฐเชฎเชพเช‚เช•เชฟเชค เชคเชฌเช•เซเช•เชพเช“ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹. เชšเชพเชฒเซ‹ เชคเซ‡เชฎเชจเซ‡ เชคเซ‹เชกเซ€เช:

  1. เชฌเซเชฐเชพเช‰เชเชฐ เชธเชฐเซเชตเชฐ เชชเชพเชธเซ‡เชฅเซ€ เชซเชพเช‡เชฒเชจเซ€ เชตเชฟเชจเช‚เชคเซ€ เช•เชฐเซ‡ เช›เซ‡ index.html (เชœเซ‡ เชฌเชฆเชฒเชพเชฎเชพเช‚ เชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชชเซ‡เช•เซ‡เชœ เชฒเซ‹เชก เช•เชฐเซ‡ เช›เซ‡).
  2. เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชธเชพเชฅเซ‡ เช•เซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ เช•เชฐเซ‡ เช›เซ‡, เชœเซ‡เชจเชพ เช•เชพเชฐเชฃเซ‡ เชธเซเชชเซเชฐเชฟเช‚เช— เชชเชฐ เช†เชงเชพเชฐเชฟเชค เชตเซ‡เชฌ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชชเชฐ เช•เซ‰เชฒ เชฅเชพเชฏ เช›เซ‡.
  3. เชตเซ‡เชฌ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชŸเซ‡เช•เซเชธเซเชŸเชจเซ‡ เชชเชพเชฐเซเชธ เช•เชฐเชตเชพเชจเซ€ เชตเชฟเชจเช‚เชคเซ€เชจเซ‡ เชชเชพเชฏเชฅเซ‹เชจ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ เชซเซ‹เชฐเชตเชฐเซเชก เช•เชฐเซ‡ เช›เซ‡.
  4. เชชเชพเชฏเชฅเซ‹เชจ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชŸเซ‡เช•เซเชธเซเชŸเชจเซ€ เชญเชพเชตเชจเชพเชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชตเชฟเชจเช‚เชคเซ€เชจเชพ เชชเซเชฐเชคเชฟเชญเชพเชต เชคเชฐเซ€เช•เซ‡ เชชเชฐเชฟเชฃเชพเชฎ เช†เชชเซ‡ เช›เซ‡.
  5. เชธเซเชชเซเชฐเชฟเช‚เช— เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฐเชฟเชเช•เซเชŸ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‹ เชชเซเชฐเชคเชฟเชธเชพเชฆ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡ (เชœเซ‡ เชฌเชฆเชฒเชพเชฎเชพเช‚, เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเชจเซ‡ เชตเชฟเชถเซเชฒเซ‡เชทเชฟเชค เชŸเซ‡เช•เซเชธเซเชŸเชจเซเช‚ เชชเชฐเชฟเชฃเชพเชฎ เชฌเชคเชพเชตเซ‡ เช›เซ‡).

เช† เชคเชฎเชพเชฎ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฎเชพเชŸเซ‡ เช•เซ‹เชก เชฎเชณเซ€ เชถเช•เซ‡ เช›เซ‡ เช…เชนเซ€เช‚. เชนเซเช‚ เชญเชฒเชพเชฎเชฃ เช•เชฐเซเช‚ เช›เซเช‚ เช•เซ‡ เชคเชฎเซ‡ เชนเชฎเชฃเชพเช‚ เชœ เช† เชญเช‚เชกเชพเชฐเชจเซ€ เชจเช•เชฒ เช•เชฐเซ‹, เช•เชพเชฐเชฃ เช•เซ‡ เช…เชฎเชพเชฐเซ€ เช†เช—เชณ เชคเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เช˜เชฃเชพ เชฐเชธเชชเซเชฐเชฆ เชชเซเชฐเชฏเซ‹เช—เซ‹ เช›เซ‡.

เชธเซเชฅเชพเชจเชฟเช• เชฎเชถเซ€เชจ เชชเชฐ เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธเชฟเชธ เชชเชฐ เช†เชงเชพเชฐเชฟเชค เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชšเชฒเชพเชตเชตเซ€

เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช•เชพเชฐเซเชฏ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเชพเชฐเซ‡ เชคเซเชฐเชฃเซ‡เชฏ เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธเชฟเชธ เชถเชฐเซ‚ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชšเชพเชฒเซ‹ เชคเซ‡เชฎเชพเช‚เชฅเซ€ เชธเซŒเชฅเซ€ เชธเซเช‚เชฆเชฐ เชธเชพเชฅเซ‡ เชถเชฐเซ‚ เช•เชฐเซ€เช - เชซเซเชฐเชจเซเชŸ-เชเชจเซเชก เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ.

โ–เชธเซเชฅเชพเชจเชฟเช• เชตเชฟเช•เชพเชธ เชฎเชพเชŸเซ‡ เชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ เชธเซ‡เชŸ เช•เชฐเชตเซ€

เชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ เชคเชฎเชพเชฐเชพ เช•เชฎเซเชชเซเชฏเซเชŸเชฐ เชชเชฐ Node.js เชซเซเชฐเซ‡เชฎเชตเชฐเซเช• เช…เชจเซ‡ NPM เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เช† เชฌเชงเซเช‚ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซเชฏเชพ เชชเช›เซ€, เชŸเชฐเซเชฎเชฟเชจเชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชซเซ‹เชฒเซเชกเชฐเชฎเชพเช‚ เชœเชพเช“ sa-frontend เช…เชจเซ‡ เชจเซ€เชšเซ‡เชจเซ‹ เช†เชฆเซ‡เชถ เชšเชฒเชพเชตเซ‹:

npm install

เชซเซ‹เชฒเซเชกเชฐเชฎเชพเช‚ เช† เช†เชฆเซ‡เชถเชจเซ‹ เช…เชฎเชฒ เช•เชฐเซ€เชจเซ‡ node_modules เชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ€ เช…เชตเชฒเช‚เชฌเชจ เชฒเซ‹เชก เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡, เชœเซ‡เชจเซ‹ เชฐเซ‡เช•เซ‹เชฐเซเชก เชซเชพเช‡เชฒเชฎเชพเช‚ เช›เซ‡ package.json. เชธเชฎเชพเชจ เชซเซ‹เชฒเซเชกเชฐเชฎเชพเช‚ เชจเชฟเชฐเซเชญเชฐเชคเชพเชจเซ‡ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซเชฏเชพ เชชเช›เซ€, เชจเซ€เชšเซ‡เชจเซ‹ เช†เชฆเซ‡เชถ เชšเชฒเชพเชตเซ‹:

npm start

เชฌเชธ เชเชŸเชฒเซเช‚ เชœ. React เชเชช เชนเชตเซ‡ เชšเชพเชฒเซ€ เชฐเชนเซ€ เช›เซ‡ เช…เชจเซ‡ เชฌเซเชฐเชพเช‰เชเชฐ เชเชกเซเชฐเซ‡เชธ เชชเชฐ เชจเซ‡เชตเชฟเช—เซ‡เชŸ เช•เชฐเซ€เชจเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡ localhost:3000. เชคเชฎเซ‡ เชคเซ‡เชจเชพ เช•เซ‹เชกเชฎเชพเช‚ เช•เช‚เชˆเช• เชฌเชฆเชฒเซ€ เชถเช•เซ‹ เช›เซ‹. เชคเชฎเซ‡ เชคเชฐเชค เชœ เชฌเซเชฐเชพเช‰เชเชฐเชฎเชพเช‚ เช† เชซเซ‡เชฐเชซเชพเชฐเซ‹เชจเซ€ เช…เชธเชฐ เชœเซ‹เชถเซ‹. เชฎเซ‹เชกเซเชฏเซเชฒเซ‹เชจเชพ เช•เชนเซ‡เชตเชพเชคเชพ "เช—เชฐเชฎ" เชฐเชฟเชชเซเชฒเซ‡เชธเชฎเซ‡เชจเซเชŸเชจเซ‡ เช•เชพเชฐเชฃเซ‡ เช† เชถเช•เซเชฏ เช›เซ‡. เช†เชจเซ‹ เช†เชญเชพเชฐ, เชซเซเชฐเชจเซเชŸ เชเชจเซเชก เชกเซ‡เชตเชฒเชชเชฎเซ‡เชจเซเชŸ เชเช• เชธเชฐเชณ เช…เชจเซ‡ เช†เชจเช‚เชฆเชชเซเชฐเชฆ เช…เชจเซเชญเชต เชฌเชจเซ€ เชœเชพเชฏ เช›เซ‡.

โ–เชชเซเชฐเซ‹เชกเช•เซเชถเชจ เชฎเชพเชŸเซ‡ เชฐเชฟเชเช•เซเชŸ เชเชช เชคเซˆเชฏเชพเชฐ เช•เชฐเชตเซ€

เช–เชฐเซ‡เช–เชฐ เชฐเซ€เชเช•เซเชŸ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเชพ เชนเซ‡เชคเซเช“ เชฎเชพเชŸเซ‡, เช…เชฎเชพเชฐเซ‡ เชคเซ‡เชจเซ‡ เชธเซเชฅเชฟเชฐ เชซเชพเช‡เชฒเซ‹เชจเชพ เชธเชฎเซ‚เชนเชฎเชพเช‚ เชฐเซ‚เชชเชพเช‚เชคเชฐเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เช…เชจเซ‡ เชตเซ‡เชฌ เชธเชฐเซเชตเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช•เซเชฒเชพเชฏเช‚เชŸเชจเซ‡ เชธเซ‡เชตเชพ เช†เชชเชตเซ€ เชชเชกเชถเซ‡.

เชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡, เชซเชฐเซ€เชฅเซ€ เชŸเชฐเซเชฎเชฟเชจเชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡, เชซเซ‹เชฒเซเชกเชฐ เชชเชฐ เชจเซ‡เชตเชฟเช—เซ‡เชŸ เช•เชฐเซ‹ sa-frontend เช…เชจเซ‡ เชจเซ€เชšเซ‡เชจเซ‹ เช†เชฆเซ‡เชถ เชšเชฒเชพเชตเซ‹:

npm run build

เช† เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชซเซ‹เชฒเซเชกเชฐเชฎเชพเช‚ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€ เชฌเชจเชพเชตเชถเซ‡ build. เชคเซ‡เชฎเชพเช‚ เชฐเชฟเชเช•เซเชŸ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เชคเชฎเชพเชฎ เชธเซเชŸเซ‡เชŸเชฟเช• เชซเชพเช‡เชฒเซ‹ เชนเชถเซ‡.

โ– Nginx เชธเชพเชฅเซ‡ เชธเซเชŸเซ‡เชŸเชฟเช• เชซเชพเช‡เชฒเซ‹เชจเซ€ เชธเซ‡เชตเชพ เช•เชฐเชตเซ€

เชชเซเชฐเชฅเชฎ เชคเชฎเชพเชฐเซ‡ Nginx เชตเซ‡เชฌ เชธเชฐเซเชตเชฐเชจเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช…เชจเซ‡ เชšเชฒเชพเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชคเซ‡ เชคเชฎเซ‡ เชคเซ‡เชจเซ‡ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพ เช…เชจเซ‡ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡เชจเซ€ เชธเซ‚เชšเชจเชพเช“ เชถเซ‹เชงเซ€ เชถเช•เซ‹ เช›เซ‹. เชชเช›เซ€ เชคเชฎเชพเชฐเซ‡ เชซเซ‹เชฒเซเชกเชฐเชจเซ€ เชธเชพเชฎเช—เซเชฐเซ€เชจเซ€ เชจเช•เชฒ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ sa-frontend/build เชซเซ‹เชฒเซเชกเชฐ เชชเชฐ [your_nginx_installation_dir]/html.

เช† เช…เชญเชฟเช—เชฎ เชธเชพเชฅเซ‡, เชฐเชฟเชเช•เซเชŸ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ€ เชเชธเซ‡เชฎเซเชฌเชฒเซ€ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชซเชพเชˆเชฒ เชœเชจเชฐเซ‡เชŸ เชฅเชพเชฏ เช›เซ‡ index.html เช–เชพเชคเซ‡ เช‰เชชเชฒเชฌเซเชง เชฅเชถเซ‡ [your_nginx_installation_dir]/html/index.html. เช† เชคเซ‡ เชซเชพเช‡เชฒ เช›เซ‡ เชœเซ‡, เชกเชฟเชซเซ‰เชฒเซเชŸ เชฐเซ‚เชชเซ‡, Nginx เชธเชฐเซเชตเชฐ เชคเซ‡เชจเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชธเชฎเชธเซเชฏเชพ เช•เชฐเซ‡ เช›เซ‡. เชธเชฐเซเชตเชฐ เชชเซ‹เชฐเซเชŸ เชชเชฐ เชธเชพเช‚เชญเชณเชตเชพ เชฎเชพเชŸเซ‡ เช—เซ‹เช เชตเซ‡เชฒ เช›เซ‡ 80, เชชเชฐเช‚เชคเซ เชคเชฎเซ‡ เชซเชพเช‡เชฒเชจเซ‡ เชธเช‚เชชเชพเชฆเชฟเชค เช•เชฐเซ€เชจเซ‡ เชคเชฎเซ‡ เช‡เชšเซเช›เซ‹ เชคเซ‡ เชฐเซ€เชคเซ‡ เชคเซ‡เชจเซ‡ เช•เชธเซเชŸเชฎเชพเช‡เช เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ [your_nginx_installation_dir]/conf/nginx.conf.

เชนเชตเซ‡ เชคเชฎเชพเชฐเซเช‚ เชฌเซเชฐเชพเช‰เชเชฐ เช–เซ‹เชฒเซ‹ เช…เชจเซ‡ เชชเชฐ เชœเชพเช“ localhost:80. เชคเชฎเซ‡ เชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชชเซƒเชทเซเช  เชœเซ‹เชถเซ‹.

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชŸเซเชฏเซเชŸเซ‹เชฐเซ€เชฏเชฒ เชญเชพเช— 1: เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธ, เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธเชฟเชธ เช…เชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ
Nginx เชธเชฐเซเชตเชฐ เชฆเซเชตเชพเชฐเชพ เชธเซ‡เชตเชพ เช…เชชเชพเชคเซ€ เชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ

เชœเซ‹ เชคเชฎเซ‡ เชนเชตเซ‡ เช•เซเชทเซ‡เชคเซเชฐเชฎเชพเช‚ เช•เช‚เชˆเช• เชฆเชพเช–เชฒ เช•เชฐเซ‹ เช›เซ‹ Type your sentence เช…เชจเซ‡ เชฌเชŸเชจ เชฆเชฌเชพเชตเซ‹ Send - เช•เช‚เชˆ เชฅเชถเซ‡ เชจเชนเซ€เช‚. เชชเชฐเช‚เชคเซ, เชœเซ‹ เชคเชฎเซ‡ เช•เชจเซเชธเซ‹เชฒ เชœเซเช“ เช›เซ‹, เชคเซ‹ เชคเชฎเซ‡ เชคเซเชฏเชพเช‚ เชญเซ‚เชฒ เชธเช‚เชฆเซ‡เชถเชพเช“ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹. เช† เชญเซ‚เชฒเซ‹ เช•เซเชฏเชพเช‚ เชฅเชพเชฏ เช›เซ‡ เชคเซ‡ เชฌเชฐเชพเชฌเชฐ เชธเชฎเชœเชตเชพ เชฎเชพเชŸเซ‡, เชšเชพเชฒเซ‹ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช•เซ‹เชกเชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเซ€เช.

โ– เชซเซเชฐเชจเซเชŸ-เชเชจเซเชก เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเชพ เช•เซ‹เชกเชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ

เชซเชพเช‡เชฒเชจเซ‹ เช•เซ‹เชก เชœเซ‹เชˆ เชฐเชนเซเชฏเซ‹ เช›เซเช‚ 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, เช…เชฎเชพเชฐเซ‡ เชธเซเชชเซเชฐเชฟเช‚เช— เชชเชฐ เช†เชงเชพเชฐเชฟเชค เชตเซ‡เชฌ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชšเชฒเชพเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชŸเซเชฏเซเชŸเซ‹เชฐเซ€เชฏเชฒ เชญเชพเช— 1: เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธ, เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธเชฟเชธ เช…เชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ
เช…เชฎเชจเซ‡ เชธเซเชชเซเชฐเชฟเช‚เช— เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เชœเซ‡ POST เชตเชฟเชจเช‚เชคเซ€ เชธเซเชตเซ€เช•เชพเชฐเซ€ เชถเช•เซ‡

โ–เชตเชธเช‚เชค เชชเชฐ เช†เชงเชพเชฐเชฟเชค เชตเซ‡เชฌ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชธเซ‡เชŸ เช•เชฐเชตเซ€

เชธเซเชชเซเชฐเชฟเช‚เช— เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ JDK8 เช…เชจเซ‡ Maven เช…เชจเซ‡ เชฏเซ‹เช—เซเชฏ เชฐเซ€เชคเซ‡ เช—เซ‹เช เชตเซ‡เชฒ เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชšเชฒเซ‹เชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡. เชคเชฎเซ‡ เช† เชฌเชงเซเช‚ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€ เชฒเซ‹ เชคเซ‡ เชชเช›เซ€, เชคเชฎเซ‡ เช…เชฎเชพเชฐเชพ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชชเชฐ เช•เชพเชฎ เช•เชฐเชตเชพเชจเซเช‚ เชšเชพเชฒเซ เชฐเชพเช–เซ€ เชถเช•เซ‹ เช›เซ‹.

โ–เชเชชเซเชฒเซ€เช•เซ‡เชถเชจเชจเซ‡ เชœเชพเชฐ เชซเชพเช‡เชฒเชฎเชพเช‚ เชชเซ‡เช• เช•เชฐเชตเซ€

เชŸเชฐเซเชฎเชฟเชจเชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชซเซ‹เชฒเซเชกเชฐเชฎเชพเช‚ เชจเซ‡เชตเชฟเช—เซ‡เชŸ เช•เชฐเซ‹ sa-webapp เช…เชจเซ‡ เชจเซ€เชšเซ‡เชจเซ‹ เช†เชฆเซ‡เชถ เชฆเชพเช–เชฒ เช•เชฐเซ‹:

mvn install

เชซเซ‹เชฒเซเชกเชฐเชฎเชพเช‚ เช† เช†เชฆเซ‡เชถเชจเซ‹ เช…เชฎเชฒ เช•เชฐเซเชฏเชพ เชชเช›เซ€ sa-webapp เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡ target. เช† เชคเซ‡ เช›เซ‡ เชœเซเชฏเชพเช‚ Java เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชธเซเชฅเชฟเชค เชนเชถเซ‡, เชœเชพเชฐ เชซเชพเช‡เชฒเชฎเชพเช‚ เชชเซ‡เช• เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡, เชœเซ‡ เชซเชพเช‡เชฒ เชฆเซเชตเชพเชฐเชพ เชฐเชœเซ‚ เชฅเชพเชฏ เช›เซ‡ sentiment-analysis-web-0.0.1-SNAPSHOT.jar.

โ–เชœเชพเชตเชพ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฒเซ‹เช‚เชš เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

เชซเซ‹เชฒเซเชกเชฐ เชชเชฐ เชœเชพเช“ target เช…เชจเซ‡ เชจเซ€เชšเซ‡เชจเชพ เช†เชฆเซ‡เชถ เชธเชพเชฅเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชšเชฒเชพเชตเซ‹:

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

เช† เช†เชฆเซ‡เชถเชจเซ‹ เช…เชฎเชฒ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชญเซ‚เชฒ เช†เชตเชถเซ‡. เชคเซ‡เชจเซ‡ เช เซ€เช• เช•เชฐเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชธเซเชŸเซ‡เช• เชŸเซเชฐเซ‡เชธ เชกเซ‡เชŸเชพเชฎเชพเช‚ เช…เชชเชตเชพเชฆ เชตเชฟเช—เชคเซ‹เชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช:

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. เชšเชพเชฒเซ‹ เช•เซ‹เชกเชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเซ€เช เชœเซเชฏเชพเช‚ เชญเซ‚เชฒ เชฅเชพเชฏ เช›เซ‡.

โ–เชœเชพเชตเชพ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช•เซ‹เชก เชตเชฟเชถเซเชฒเซ‡เชทเชฃ

เช…เชนเซ€เช‚ เช•เซ‹เชก เชธเซเชจเชฟเชชเซ‡เชŸ เช›เซ‡ เชœเซเชฏเชพเช‚ เชญเซ‚เชฒ เชฅเชพเชฏ เช›เซ‡.

@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. เชฎเชพเช‚ เชเชธentimentController เชเช• เช•เซเชทเซ‡เชคเซเชฐ เช›เซ‡ saLogicApiUrl. เชคเซ‡เชจเซ€ เช•เชฟเช‚เชฎเชค เชฎเชฟเชฒเช•เชค เชฆเซเชตเชพเชฐเชพ เชธเซ‡เชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ sa.logic.api.url.
  2. เชฒเชพเช‡เชจ saLogicApiUrl เชฎเซ‚เชฒเซเชฏ เชธเชพเชฅเซ‡ เชœเซ‹เชกเชพเชฃ เช•เชฐเซ‡ เช›เซ‡ /analyse/sentiment. เชคเซ‡เช“ เชธเชพเชฅเซ‡ เชฎเชณเซ€เชจเซ‡ เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธเชจเซ‡ เช•เซ‹เชฒ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชเช• เชธเชฐเชจเชพเชฎเซเช‚ เชฌเชจเชพเชตเซ‡ เช›เซ‡ เชœเซ‡ เชŸเซ‡เช•เซเชธเซเชŸ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเซ‡ เช›เซ‡.

โ–เชธเช‚เชชเชคเซเชคเชฟ เชฎเซ‚เชฒเซเชฏ เชธเซ‡เชŸ เช•เชฐเชตเซเช‚

เชตเชธเช‚เชคเชฎเชพเช‚, เชชเซเชฐเซ‹เชชเชฐเซเชŸเซ€ เชตเซ‡เชฒเซเชฏเซเชจเซ‹ เชกเชฟเชซเซ‰เชฒเซเชŸ เชธเซเชคเซเชฐเซ‹เชค เชซเชพเช‡เชฒ เช›เซ‡ 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 เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช…เชนเซ€เช‚ เช‰เชชเชฒเชฌเซเชง เชนเชถเซ‡ localhost:5000 เช…เชจเซ‡ เชคเซ‡เชจเชพ เชตเชฟเชถเซ‡ เชญเซ‚เชฒเซ€ เชจ เชœเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ‹. เชชเชฐเชฟเชฃเชพเชฎเซ‡, เชตเชธเช‚เชค เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชถเชฐเซ‚ เช•เชฐเชตเชพเชจเซ‹ เช†เชฆเซ‡เชถ เช†เชจเชพ เชœเซ‡เชตเซ‹ เชฆเซ‡เช–เชพเชถเซ‡:

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

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชŸเซเชฏเซเชŸเซ‹เชฐเซ€เชฏเชฒ เชญเชพเช— 1: เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธ, เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธเชฟเชธ เช…เชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ
เช…เชฎเชพเชฐเซ€ เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚ Python เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช–เซ‚เชŸเซ‡ เช›เซ‡

เชนเชตเซ‡ เช†เชชเชฃเซ‡ เชซเช•เซเชค เชชเชพเชฏเชฅเซ‹เชจ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชšเชฒเชพเชตเชตเชพเชจเซ€ เช›เซ‡ เช…เชจเซ‡ เชธเชฟเชธเซเชŸเชฎ เช…เชชเซ‡เช•เซเชทเชพ เชฎเซเชœเชฌ เช•เชพเชฐเซเชฏ เช•เชฐเชถเซ‡.

โ–เชชเชพเชฏเชฅเซ‹เชจ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชธเซ‡เชŸ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

Python เชเชชเซเชฒเซ€เช•เซ‡เชถเชจ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ Python 3 เช…เชจเซ‡ Pip เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡เชฒ เชนเซ‹เชตเซเช‚ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡, เช…เชจเซ‡ เชคเชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชฏเซ‹เช—เซเชฏ เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชตเซ‡เชฐเซ€เชเชฌเชฒเซเชธ เชฏเซ‹เช—เซเชฏ เชฐเซ€เชคเซ‡ เชธเซ‡เชŸ เชนเซ‹เชตเชพ เชœเซ‹เชˆเช.

โ– เชจเชฟเชฐเซเชญเชฐเชคเชพ เชธเซเชฅเชพเชชเชฟเชค เช•เชฐเซ‹

เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชซเซ‹เชฒเซเชกเชฐ เชชเชฐ เชœเชพเช“ sa-logic/sa เช…เชจเซ‡ เชจเซ€เชšเซ‡เชจเชพ เช†เชฆเซ‡เชถเซ‹ เชšเชฒเชพเชตเซ‹:

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

โ–เชเชช เชฒเซ‹เชจเซเชš

เชจเชฟเชฐเซเชญเชฐเชคเชพเช“ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡เชฒ เช›เซ‡, เช…เชฎเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชคเซˆเชฏเชพเชฐ เช›เซ€เช:

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. เชซเซเชฒเชพเชธเซเช• เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชถเชฐเซ‚ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช, เชœเซ‡ เช…เชนเซ€เช‚ เช‰เชชเชฒเชฌเซเชง เชฅเชถเซ‡ 0.0.0.0:5000 (เชคเชฎเซ‡ เชซเซ‹เชฐเซเชฎเชจเชพ เชฌเชพเช‚เชงเช•เชพเชฎเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชชเชฃ เชคเซ‡เชจเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ localhost:5000).

เชนเชตเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฌเชจเชพเชตเซ‡ เช›เซ‡ เชคเซ‡ เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธเชฟเชธ เชšเชพเชฒเซ€ เชฐเชนเซ€ เช›เซ‡. เชคเซ‡เช“ เชเช•เชฌเซ€เชœเชพ เชธเชพเชฅเซ‡ เชตเชพเชคเชšเซ€เชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเซเชฏเซ‹เชœเชฟเชค เช›เซ‡. เช•เชพเชฐเซเชฏเชจเชพ เช† เชคเชฌเช•เซเช•เซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชกเชพเชฏเชพเช—เซเชฐเชพเชฎ เช•เซ‡เชตเซ‹ เชฆเซ‡เช–เชพเชฏ เช›เซ‡ เชคเซ‡ เช…เชนเซ€เช‚ เช›เซ‡.

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชŸเซเชฏเซเชŸเซ‹เชฐเซ€เชฏเชฒ เชญเชพเช— 1: เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธ, เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธเชฟเชธ เช…เชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ
เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฌเชจเชพเชตเซ‡ เช›เซ‡ เชคเซ‡ เชคเชฎเชพเชฎ เชฎเชพเช‡เช•เซเชฐเซ‹เชธเซ‡เชตเชพเช“เชจเซ‡ เชคเช‚เชฆเซเชฐเชธเซเชค เชธเซเชฅเชฟเชคเชฟเชฎเชพเช‚ เชฒเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡

เชนเชตเซ‡, เช†เชชเชฃเซ‡ เชšเชพเชฒเซ เชฐเชพเช–เซ€เช เชคเซ‡ เชชเชนเซ‡เชฒเชพเช‚, เชฌเซเชฐเชพเช‰เชเชฐเชฎเชพเช‚ เชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช–เซ‹เชฒเซ‹ เช…เชจเซ‡ เชคเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เช•เซ‡เชŸเชฒเชพเช• เชตเชพเช•เซเชฏเชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ‹. เชœเซ‹ เชฌเชงเซเช‚ เชฏเซ‹เช—เซเชฏ เชฐเซ€เชคเซ‡ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ - เชฌเชŸเชจ เชฆเชฌเชพเชตเซเชฏเชพ เชชเช›เซ€ Send เชคเชฎเซ‡ เชŸเซ‡เช•เซเชธเซเชŸ เชฌเซ‹เช•เซเชธเชจเซ€ เชจเซ€เชšเซ‡ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชœเซ‹เชถเซ‹.

เช†เช—เชณเชจเชพ เชตเชฟเชญเชพเช—เชฎเชพเช‚, เช…เชฎเซ‡ เชกเซ‹เช•เชฐ เช•เชจเซเชŸเซ‡เชจเชฐเชฎเชพเช‚ เช…เชฎเชพเชฐเซ€ เชฎเชพเช‡เช•เซเชฐเซ‹ เชธเชฐเซเชตเชฟเชธเซ€เชธ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชšเชฒเชพเชตเชตเซ€ เชคเซ‡ เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซ€เชถเซเช‚. เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡เชจเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชคเซˆเชฏเชพเชฐ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช† เชœเชฐเซ‚เชฐเซ€ เช›เซ‡.

เชกเซ‹เช•เชฐ เช•เชจเซเชŸเซ‡เชจเชฐ

เช•เซเชฏเซเชฌเชฐเซเชจเซ‡เชŸเชฟเชธ เช•เชจเซเชŸเซ‡เชจเชฐเชพเช‡เชเซเชก เชเชชเซเชฒเซ€เช•เซ‡เชถเชจเชจเชพ เชœเชฎเชพเชตเชŸ, เชธเซเช•เซ‡เชฒเชฟเช‚เช— เช…เชจเซ‡ เชธเช‚เชšเชพเชฒเชจเชจเซ‡ เชธเซเชตเชšเชพเชฒเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเซ€ เชธเชฟเชธเซเชŸเชฎ เช›เซ‡. เชคเซ‡เชจเซ‡ "เช•เชจเซเชŸเซ‡เชจเชฐ เช“เชฐเซเช•เซ‡เชธเซเชŸเซเชฐเซ‡เชŸเชฐ" เชชเชฃ เช•เชนเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชœเซ‹ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เช•เชจเซเชŸเซ‡เชจเชฐ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡, เชคเซ‹ เชชเช›เซ€ เช† เชธเชฟเชธเซเชŸเชฎเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเชพ เชชเชนเซ‡เชฒเชพ, เช†เชชเชฃเซ‡ เชชเชนเซ‡เชฒเชพ เช† เช•เชจเซเชŸเซ‡เชจเชฐ เชฎเซ‡เชณเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชชเชฐเช‚เชคเซ เชชเซเชฐเชฅเชฎ, เชšเชพเชฒเซ‹ เช•เชจเซเชŸเซ‡เชจเชฐ เชถเซเช‚ เช›เซ‡ เชคเซ‡ เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซ€เช. เช•เชฆเชพเชš เชคเซ‡ เชถเซเช‚ เช›เซ‡ เชคเซ‡ เชชเซเชฐเชถเซเชจเชจเซ‹ เชถเซเชฐเซ‡เชทเซเช  เชœเชตเชพเชฌ เชฎเชณเซ€ เชถเช•เซ‡ เช›เซ‡ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃ เชกเซ‹เช•เชฐ เชฎเชพเชŸเซ‡:

เช•เชจเซเชŸเซ‡เชจเชฐ เช‡เชฎเซ‡เชœ เช เชนเชณเชตเชพ เชตเชœเชจเชจเซเช‚, เชธเซเชต-เชธเชฎเชพเชฏเซ‡เชฒ, เชเช•เซเชเชฟเช•เซเชฏเซเชŸเซ‡เชฌเชฒ เชชเซ‡เช•เซ‡เชœ เช›เซ‡ เชœเซ‡เชฎเชพเช‚ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชถเชพเชฎเซ‡เชฒ เช›เซ‡, เชœเซ‡เชฎเชพเช‚ เชคเซ‡เชจเซ‡ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เชฌเชงเซเช‚ เชถเชพเชฎเซ‡เชฒ เช›เซ‡: เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช•เซ‹เชก, เชฐเชจเชŸเชพเช‡เชฎ เชชเชฐเซเชฏเชพเชตเชฐเชฃ, เชธเชฟเชธเซเชŸเชฎ เชŸเซ‚เชฒเซเชธ เช…เชจเซ‡ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เช“, เชธเซ‡เชŸเชฟเช‚เช—เซเชธ. เช•เชจเซเชŸเซ‡เชจเชฐเชพเช‡เชเซเชก เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— Linux เช…เชจเซ‡ Windows เชฌเช‚เชจเซ‡ เชตเชพเชคเชพเชตเชฐเชฃเชฎเชพเช‚ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡ เช…เชจเซ‡ เชˆเชจเซเชซเซเชฐเชพเชธเซเชŸเซเชฐเช•เซเชšเชฐเชจเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเซ€เชงเชพ เชตเชฟเชจเชพ เชนเช‚เชฎเซ‡เชถเชพ เชคเซ‡ เชœ เช•เชพเชฐเซเชฏ เช•เชฐเชถเซ‡.

เช†เชจเซ‹ เช…เชฐเซเชฅ เช เช›เซ‡ เช•เซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เชชเซเชฐเซ‹เชกเช•เซเชถเชจ เชธเชฐเซเชตเชฐเซเชธ เชธเชนเชฟเชค เช•เซ‹เชˆเชชเชฃ เช•เชฎเซเชชเซเชฏเซเชŸเชฐ เชชเชฐ เชšเชฒเชพเชตเซ€ เชถเช•เชพเชฏ เช›เซ‡ เช…เชจเซ‡ เช•เซ‹เชˆเชชเชฃ เชตเชพเชคเชพเชตเชฐเชฃเชฎเชพเช‚, เชคเซ‡เชฎเชพเช‚ เชฌเช‚เชงเชพเชฏเซ‡เชฒ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซ‹ เชคเซ‡ เชœ เชฐเซ€เชคเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเชถเซ‡.

เช•เชจเซเชŸเซ‡เชจเชฐเชจเซ€ เชตเชฟเชถเซ‡เชทเชคเชพเช“เชจเซเช‚ เช…เชจเซเชตเซ‡เชทเชฃ เช•เชฐเชตเชพ เช…เชจเซ‡ เชเชชเซเชฒเซ€เช•เซ‡เชถเชจ เชšเชฒเชพเชตเชตเชพเชจเซ€ เช…เชจเซเชฏ เชฐเซ€เชคเซ‹ เชธเชพเชฅเซ‡ เชคเซ‡เชฎเชจเซ€ เชธเชฐเช–เชพเชฎเชฃเซ€ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชšเชพเชฒเซ‹ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจ เช…เชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชฐเซ€เชเช•เซเชŸ เชเชชเซเชฒเซ€เช•เซ‡เชถเชจ เชธเซ‡เชตเชพ เช†เชชเชตเชพเชจเซเช‚ เช‰เชฆเชพเชนเชฐเชฃ เชœเซ‹เชˆเช.

โ– เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ€ เชธเซเชฅเชฟเชฐ เชซเชพเช‡เชฒเซ‹เชจเซ‡ เชธเซ‡เชตเชพ เช†เชชเชตเซ€

เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชธเซเชฅเชฟเชฐ เชซเชพเช‡เชฒเซ‹เชจเซ€ เชœเชพเชณเชตเชฃเซ€เชจเซ‡ เช—เซ‹เช เชตเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช, เช…เชฎเซ‡ เชจเซ€เชšเซ‡เชจเชพ เช—เซ‡เชฐเชซเชพเชฏเชฆเชพเชจเซ‹ เชธเชพเชฎเชจเซ‹ เช•เชฐเซ€เชถเซเช‚:

  1. เชธเช‚เชธเชพเชงเชจเซ‹เชจเซ‹ เชฌเชฟเชจเช•เชพเชฐเซเชฏเช•เซเชทเชฎ เช‰เชชเชฏเซ‹เช—, เช•เชพเชฐเชฃ เช•เซ‡ เชฆเชฐเซ‡เช• เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจ เชธเช‚เชชเซ‚เชฐเซเชฃ เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎ เช›เซ‡.
  2. เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เชจเชฟเชฐเซเชญเชฐเชคเชพ. เช•เซ‡เชŸเชฒเชพเช• เชธเซเชฅเชพเชจเชฟเช• เช•เชฎเซเชชเซเชฏเซเชŸเชฐ เชชเชฐ เชœเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡ เชชเซเชฐเซ‹เชกเช•เซเชถเชจ เชธเชฐเซเชตเชฐ เชชเชฐ เชธเชพเชฐเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฎ เช•เชฐเชคเซเช‚ เชจเชฅเซ€.
  3. เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจ เชธเซ‹เชฒเซเชฏเซเชถเชจเชจเซ€ เชงเซ€เชฎเซ€ เช…เชจเซ‡ เชธเช‚เชธเชพเชงเชจ เชธเช˜เชจ เชธเซเช•เซ‡เชฒเชฟเช‚เช—.

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชŸเซเชฏเซเชŸเซ‹เชฐเซ€เชฏเชฒ เชญเชพเช— 1: เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธ, เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธเชฟเชธ เช…เชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ
Nginx เชตเซ‡เชฌ เชธเชฐเซเชตเชฐ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจเชฎเชพเช‚ เชšเชพเชฒเชคเซ€ เชธเซเชฅเชฟเชฐ เชซเชพเช‡เชฒเซ‹เชจเซ‡ เชธเซ‡เชตเชพ เช†เชชเซ‡ เช›เซ‡

เชœเซ‹ เชธเชฎเชพเชจ เชธเชฎเชธเซเชฏเชพเชจเซ‡ เช‰เช•เซ‡เชฒเชตเชพ เชฎเชพเชŸเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชคเซ‹ เชชเช›เซ€, เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจเซ‹เชจเซ€ เชคเซเชฒเชจเชพเชฎเชพเช‚, เชจเซ€เชšเซ‡เชจเซ€ เชถเช•เซเชคเชฟเช“ เชจเซ‹เช‚เชงเซ€ เชถเช•เชพเชฏ เช›เซ‡:

  1. เชธเช‚เชธเชพเชงเชจเซ‹เชจเซ‹ เช•เชพเชฐเซเชฏเช•เซเชทเชฎ เช‰เชชเชฏเซ‹เช—: เชกเซ‹เช•เชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเซ‹.
  2. เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เชธเซเชตเชคเช‚เชคเซเชฐเชคเชพ. เชเช• เช•เชจเซเชŸเซ‡เชจเชฐ เชœเซ‡ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพ เชชเซ‹เชคเชพเชจเชพ เช•เชฎเซเชชเซเชฏเซเชŸเชฐ เชชเชฐ เชšเชฒเชพเชตเซ€ เชถเช•เซ‡ เช›เซ‡ เชคเซ‡ เช—เชฎเซ‡ เชคเซเชฏเชพเช‚ เชšเชพเชฒเชถเซ‡.
  3. เช›เชฌเซ€ เชธเซเชคเชฐเซ‹เชจเชพ เช‰เชชเชฏเซ‹เช— เชฆเซเชตเชพเชฐเชพ เชนเชฒเช•เซ‹ เชœเชฎเชพเชตเชŸ.

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชŸเซเชฏเซเชŸเซ‹เชฐเซ€เชฏเชฒ เชญเชพเช— 1: เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธ, เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธเชฟเชธ เช…เชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ
Nginx เชตเซ‡เชฌ เชธเชฐเซเชตเชฐ เช•เชจเซเชŸเซ‡เชจเชฐเชฎเชพเช‚ เชšเชพเชฒเชคเซ€ เชธเซเชฅเชฟเชฐ เชซเชพเช‡เชฒเซ‹เชจเซ‡ เชธเซ‡เชตเชพ เช†เชชเซ‡ เช›เซ‡

เช…เชฎเซ‡ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจเซ‹ เช…เชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐเชจเซ€ เชธเชฐเช–เชพเชฎเชฃเซ€ เชฎเชพเชคเซเชฐ เชฅเซ‹เชกเชพ เชฎเซเชฆเซเชฆเชพเช“ เชชเชฐ เช•เชฐเซ€ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡ เชชเชฃ เช•เชจเซเชŸเซ‡เชจเชฐเชจเซ€ เชถเช•เซเชคเชฟเชจเซ‹ เช…เชจเซเชญเชต เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชชเซ‚เชฐเชคเซเช‚ เช›เซ‡. เชคเซ‡ เชคเชฎเซ‡ เชกเซ‹เช•เชฐ เช•เชจเซเชŸเซ‡เชจเชฐ เชตเชฟเชถเซ‡ เชตเชฟเช—เชคเซ‹ เชฎเซ‡เชณเชตเซ€ เชถเช•เซ‹ เช›เซ‹.

โ– เชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฎเชพเชŸเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เช›เชฌเซ€ เชฌเชจเชพเชตเชตเซ€

เชกเซ‹เช•เชฐ เช•เชจเซเชŸเซ‡เชจเชฐเชจเซ‹ เชฎเซ‚เชณเชญเซ‚เชค เชฌเชฟเชฒเซเชกเซ€เช‚เช— เชฌเซเชฒเซ‹เช• เช เชซเชพเช‡เชฒ เช›เซ‡ Dockerfile. เช† เชซเชพเช‡เชฒเชจเซ€ เชถเชฐเซ‚เช†เชคเชฎเชพเช‚, เช•เชจเซเชŸเซ‡เชจเชฐเชจเซ€ เชฌเซ‡เช เช‡เชฎเซ‡เชœ เชฐเซ‡เช•เซ‹เชฐเซเชก เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชชเช›เซ€ เชธเซ‚เชšเชจเชพเช“เชจเซ‹ เช•เซเชฐเชฎ เชถเชพเชฎเซ‡เชฒ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เชœเซ‡ เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡ เช•เซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฌเชจเชพเชตเชตเซเช‚ เชœเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ€ เชœเชฐเซ‚เชฐเชฟเชฏเชพเชคเซ‹เชจเซ‡ เชชเซ‚เชฐเซเชฃ เช•เชฐเชถเซ‡.

เช…เชฎเซ‡ เชซเชพเช‡เชฒ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซ€เช เชคเซ‡ เชชเชนเซ‡เชฒเชพเช‚ DockerfileNginx เชธเชฐเซเชตเชฐ เชชเชฐ เช…เชชเชฒเซ‹เชก เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ€ เชซเชพเช‡เชฒเซ‹ เชคเซˆเชฏเชพเชฐ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช…เชฎเซ‡ เชถเซเช‚ เช•เชฐเซเชฏเซเช‚ เชคเซ‡ เชฏเชพเชฆ เชฐเชพเช–เซ‹:

  1. เชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชชเซ‡เช•เซ‡เชœ เชฌเชจเชพเชตเชตเซเช‚ (npm run build).
  2. Nginx เชธเชฐเซเชตเชฐ เชถเชฐเซ‚ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช.
  3. เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชจเซ€ เชธเชพเชฎเช—เซเชฐเซ€เชจเซ€ เชจเช•เชฒ เช•เชฐเชตเซ€ build เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชซเซ‹เชฒเซเชกเชฐเชฎเชพเช‚เชฅเซ€ sa-frontend เชธเชฐเซเชตเชฐ เชซเซ‹เชฒเซเชกเชฐเชฎเชพเช‚ nginx/html.

เชจเซ€เชšเซ‡ เชคเชฎเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เชฌเชจเชพเชตเชตเชพ เช…เชจเซ‡ เชธเซเชฅเชพเชจเชฟเช• เช•เชฎเซเชชเซเชฏเซเชŸเชฐ เชชเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชคเซ€ เช‰เชชเชฐเซ‹เช•เซเชค เช•เซเชฐเชฟเชฏเชพเช“ เชตเชšเซเชšเซ‡เชจเซ€ เชธเชฎเชพเชจเชคเชพ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹.

โ–SA-เชซเซเชฐเชจเซเชŸเซ‡เชจเซเชก เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฎเชพเชŸเซ‡ เชกเซ‹เช•เชฐเชซเชพเช‡เชฒ เชคเซˆเชฏเชพเชฐ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

เชฎเชพเช‚ เชธเชฎเชพเชตเชตเชพเชจเซ€ เชธเซ‚เชšเชจเชพเช“ 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. เชนเช•เซ€เช•เชคเชฎเชพเช‚, เช…เชนเซ€เช‚ เชชเชฃ เช•เช‚เชˆ เชœเชŸเชฟเชฒ เชจเชฅเซ€. เชนเช•เซ€เช•เชค เช เช›เซ‡ เช•เซ‡ เชธเช‚เชฌเช‚เชงเชฟเชค เชฎเชพเชนเชฟเชคเซ€ เชคเซ‡เชฎเชพเช‚ เชฎเชณเซ€ เชถเช•เซ‡ เช›เซ‡ เชตเชฐเซเชฃเชจ เช›เชฌเซ€

โ–เช‡เชฎเซ‡เชœเชจเซ‡ เชเชธเซ‡เชฎเซเชฌเชฒ เช•เชฐเชตเซ€ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชฐเชฟเชชเซ‹เชเซ€เชŸเชฐเซ€เชฎเชพเช‚ เช…เชชเชฒเซ‹เชก เช•เชฐเชตเซ€

เช…เชฎเซ‡ เชชเซ‚เชฐเซเชฃ เช•เชฐเซ‡เชฒเซ€ เช›เชฌเซ€ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเซ€ เชถเช•เซ€เช เชคเซ‡ เชชเชนเซ‡เชฒเชพเช‚, เช…เชฎเชพเชฐเซ‡ เชคเซ‡เชจเซ‡ เช‡เชฎเซ‡เชœ เชฐเชฟเชชเซ‹เชเซ€เชŸเชฐเซ€เชฎเชพเช‚ เชธเชฌเชฎเชฟเชŸ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชฎเชซเชค เช•เซเชฒเชพเช‰เชก-เช†เชงเชพเชฐเชฟเชค เช‡เชฎเซ‡เชœ เชนเซ‹เชธเซเชŸเชฟเช‚เช— เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เชกเซ‹เช•เชฐ เชนเชฌเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชถเซเช‚. เช•เชพเชฐเซเชฏเชจเชพ เช† เชคเชฌเช•เซเช•เซ‡, เชคเชฎเชพเชฐเซ‡ เชจเซ€เชšเซ‡เชจเชพ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡:

  1. เชธเซเชฅเชพเชชเชฟเชค เช•เชฐเซ‹ Docker.
  2. เชกเซ‹เช•เชฐ เชนเชฌ เชธเชพเช‡เชŸ เชชเชฐ เชจเซ‹เช‚เชงเชฃเซ€ เช•เชฐเซ‹.
  3. เชŸเชฐเซเชฎเชฟเชจเชฒเชฎเชพเช‚ เชจเซ€เชšเซ‡เชจเซ‹ เช†เชฆเซ‡เชถ เชšเชฒเชพเชตเซ€เชจเซ‡ เชคเชฎเชพเชฐเชพ เชเช•เชพเช‰เชจเซเชŸเชฎเชพเช‚ เชฒเซ‹เช— เช‡เชจ เช•เชฐเซ‹:
    docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD"

เชนเชตเซ‡ เชคเชฎเชพเชฐเซ‡ เชŸเชฐเซเชฎเชฟเชจเชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€ เชชเชฐ เชœเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ sa-frontend เช…เชจเซ‡ เชคเซเชฏเชพเช‚ เชจเซ€เชšเซ‡เชจเซ‹ เช†เชฆเซ‡เชถ เชšเชฒเชพเชตเซ‹:

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

เชธเชฎเชพเชจ เช†เชฆเซ‡เชถเซ‹เชฎเชพเช‚ เช…เชนเซ€เช‚ เช…เชจเซ‡ เชจเซ€เชšเซ‡ $DOCKER_USER_ID เชกเซ‹เช•เชฐ เชนเชฌ เชชเชฐ เชคเชฎเชพเชฐเชพ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเชจเชพเชฎ เชธเชพเชฅเซ‡ เชฌเชฆเชฒเชตเซเช‚ เชœเซ‹เชˆเช. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เช†เชฆเซ‡เชถเชจเซ‹ เช† เชญเชพเช— เช†เชจเชพ เชœเซ‡เชตเซ‹ เชฆเซ‡เช–เชพเชˆ เชถเช•เซ‡ เช›เซ‡: rinormaloku/sentiment-analysis-frontend.

เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เช† เช†เชฆเซ‡เชถเชจเซ‡ เชคเซ‡เชฎเชพเช‚เชฅเซ€ เชฆเซ‚เชฐ เช•เชฐเซ€เชจเซ‡ เชŸเซ‚เช‚เช•เชพเชตเซ€ เชถเช•เชพเชฏ เช›เซ‡ -f Dockerfile, เช•เชพเชฐเชฃ เช•เซ‡ เชœเซ‡ เชซเซ‹เชฒเซเชกเชฐเชฎเชพเช‚ เช†เชชเชฃเซ‡ เช† เช†เชฆเซ‡เชถเชจเซ‹ เช…เชฎเชฒ เช•เชฐเซ€เช เช›เซ€เช เชคเซ‡เชฎเชพเช‚ เช† เชซเชพเชˆเชฒ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เช›เซ‡.

เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€เชฎเชพเช‚ เชธเชฎเชพเชชเซเชค เชฅเชฏเซ‡เชฒ เช›เชฌเซ€ เชฎเซ‹เช•เชฒเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเชจเซ‡ เชจเซ€เชšเซ‡เชจเชพ เช†เชฆเซ‡เชถเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡:

docker push $DOCKER_USER_ID/sentiment-analysis-frontend

เชคเซ‡เชจเซ‡ เชชเซ‚เชฐเซเชฃ เช•เชฐเซเชฏเชพ เชชเช›เซ€, เช›เชฌเซ€เชจเซ‡ เชธเชซเชณเชคเชพเชชเซ‚เชฐเซเชตเช• เช•เซเชฒเชพเช‰เชก เชธเซเชŸเซ‹เชฐเซ‡เชœ เชชเชฐ เชงเช•เซ‡เชฒเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡ เช•เซ‡ เช•เซ‡เชฎ เชคเซ‡ เชœเซ‹เชตเชพ เชฎเชพเชŸเซ‡ เชกเซ‹เช•เชฐ เชนเชฌ เชชเชฐ เชคเชฎเชพเชฐเซ€ เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€เชเชจเซ€ เชธเซ‚เชšเชฟ เชคเชชเชพเชธเซ‹.

โ– เช•เชจเซเชŸเซ‡เชจเชฐ เชถเชฐเซ‚ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

เชนเชตเซ‡ เช•เซ‹เชˆเชชเชฃ เชคเชฐเซ€เช•เซ‡ เช“เชณเช–เชพเชคเซ€ เชˆเชฎเซ‡เชœ เชกเชพเช‰เชจเชฒเซ‹เชก เช…เชจเซ‡ เชšเชฒเชพเชตเซ€ เชถเช•เซ‡ เช›เซ‡ $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 เช•เชจเซเชŸเซ‡เชจเชฐเชจเซเช‚ เชชเซ‹เชฐเซเชŸ เช›เซ‡ เช•เซ‡ เชœเซ‡เชจเชพ เชชเชฐ เชตเชฟเชจเช‚เชคเซ€ เชฐเซ€เชกเชพเชฏเชฐเซ‡เช•เซเชŸ เชฅเชตเซ€ เชœเซ‹เชˆเช.

เชจเซ€เชšเซ‡เชจเชพ เช‰เชฆเชพเชนเชฐเชฃเชจเซ‹ เชตเชฟเชšเชพเชฐ เช•เชฐเซ‹.

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชŸเซเชฏเซเชŸเซ‹เชฐเซ€เชฏเชฒ เชญเชพเช— 1: เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธ, เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธเชฟเชธ เช…เชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ
เชชเซ‹เชฐเซเชŸ เชซเซ‹เชฐเชตเชฐเซเชกเชฟเช‚เช—

เชธเชฟเชธเซเชŸเชฎ เชชเซ‹เชฐเซเชŸ เชชเชฐเชฅเซ€ เชตเชฟเชจเช‚เชคเซ€เช“ เชซเซ‹เชฐเชตเชฐเซเชก เช•เชฐเซ‡ เช›เซ‡ <hostPort> เชฌเช‚เชฆเชฐ เชธเซเชงเซ€ <containerPort>. เชเชŸเชฒเซ‡ เช•เซ‡ เชฌเช‚เชฆเชฐ เชธเซเชงเซ€ เชชเชนเซ‹เช‚เชšเชตเซเช‚ 80 เช•เชฎเซเชชเซเชฏเซเชŸเชฐเชจเซ‡ เชชเซ‹เชฐเซเชŸ เชชเชฐ เชฐเซ€เชกเชพเชฏเชฐเซ‡เช•เซเชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ 80 เช•เชจเซเชŸเซ‡เชจเชฐ

เชชเซ‹เชฐเซเชŸ เชฅเซ€ 80 เชธเซเชฅเชพเชจเชฟเช• เช•เชฎเซเชชเซเชฏเซเชŸเชฐ เชชเชฐ เช–เซ‹เชฒเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชคเชฎเซ‡ เช† เช•เชฎเซเชชเซเชฏเซเชŸเชฐเชฅเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ เช…เชนเซ€เช‚เชฅเซ€ เชเช•เซเชธเซ‡เชธ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ localhost:80. เชœเซ‹ เชคเชฎเชพเชฐเซ€ เชธเชฟเชธเซเชŸเชฎ เชกเซ‹เช•เชฐเชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเชคเซ€ เชจเชฅเซ€, เชคเซ‹ เชคเชฎเซ‡ เชกเซ‹เช•เชฐ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจ เชชเชฐ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชšเชฒเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹, เชœเซ‡เชจเซเช‚ เชธเชฐเชจเชพเชฎเซเช‚ เช†เชจเชพ เชœเซ‡เชตเซเช‚ เชฆเซ‡เช–เชพเชถเซ‡ <docker-machine ip>:80. เชกเซ‹เช•เชฐ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจเชจเซเช‚ IP เชธเชฐเชจเชพเชฎเซเช‚ เชถเซ‹เชงเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเซ‡ เช†เชฆเซ‡เชถเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ docker-machine ip.

เช† เชฌเชฟเช‚เชฆเซเช, เชเช•เชตเชพเชฐ เชซเซเชฐเชจเซเชŸ-เชเชจเซเชก เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช•เชจเซเชŸเซ‡เชจเชฐ เชธเชซเชณเชคเชพเชชเซ‚เชฐเซเชตเช• เชฒเซ‹เช‚เชš เชฅเชˆ เชœเชพเชฏ, เชชเช›เซ€ เชคเชฎเซ‡ เชคเซ‡เชจเซเช‚ เชชเซƒเชทเซเช  เชฌเซเชฐเชพเช‰เชเชฐเชฎเชพเช‚ เช–เซ‹เชฒเชตเชพ เชฎเชพเชŸเซ‡ เชธเชฎเชฐเซเชฅ เชนเซ‹เชตเชพ เชœเซ‹เชˆเช.

โ–.dockerignore เชซเชพเช‡เชฒ

เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช›เชฌเซ€ เชฌเชจเชพเชตเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช SA-Frontend, เช…เชฎเซ‡ เชจเซ‹เช‚เชง เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช เช•เซ‡ เช† เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช…เชคเซเชฏเช‚เชค เชงเซ€เชฎเซ€ เช›เซ‡. เช† เชเชŸเชฒเชพ เชฎเชพเชŸเซ‡ เช›เซ‡ เช•เชพเชฐเชฃ เช•เซ‡ เช‡เชฎเซ‡เชœ เชฌเชฟเชฒเซเชก เชธเช‚เชฆเชฐเซเชญ เชกเซ‹เช•เชฐ เชกเชฟเชฎเชจเชจเซ‡ เชฎเซ‹เช•เชฒเชตเซ‹ เช†เชตเชถเซเชฏเช• เช›เซ‡. เชจเชฟเชฐเซเชฆเซ‡เชถเชฟเช•เชพ เชœเซ‡ เชฌเชฟเชฒเซเชก เชธเช‚เชฆเชฐเซเชญเชจเซ‡ เชฐเชœเซ‚ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡ เช†เชฆเซ‡เชถเชจเซ€ เช›เซ‡เชฒเซเชฒเซ€ เชฆเชฒเซ€เชฒ เชคเชฐเซ€เช•เซ‡ เช†เชชเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ docker build. เช…เชฎเชพเชฐเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เช† เช†เชฆเซ‡เชถเชจเชพ เช…เช‚เชคเซ‡ เชเช• เชฌเชฟเช‚เชฆเซ เช›เซ‡. เช†เชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซ‡ เชเชธเซ‡เชฎเซเชฌเชฒเซ€ เชธเช‚เชฆเชฐเซเชญเชฎเชพเช‚ เชจเซ€เชšเซ‡เชจเซ€ เชฐเชšเชจเชพเชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡:

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

เชชเชฐเช‚เชคเซ เช…เชนเซ€เช‚ เชนเชพเชœเชฐ เชคเชฎเชพเชฎ เชซเซ‹เชฒเซเชกเชฐเซเชธเชฎเชพเช‚เชฅเซ€, เช†เชชเชฃเชจเซ‡ เชซเช•เซเชค เชเช• เชซเซ‹เชฒเซเชกเชฐเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ build. เชฌเซ€เชœเซเช‚ เช•เช‚เชˆเชชเชฃ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเชตเซเช‚ เช เชธเชฎเชฏเชจเซ‹ เชตเซเชฏเชฏ เช›เซ‡. เชคเชฎเซ‡ เชกเซ‹เช•เชฐเชจเซ‡ เช•เชˆ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เช“ เช…เชตเช—เชฃเชตเซ€ เชคเซ‡ เช•เชนเซ€เชจเซ‡ เชฌเชฟเชฒเซเชกเชจเซ‡ เชเชกเชชเซ€ เชฌเชจเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹. เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเชจเซ‡ เชเช• เชซเชพเช‡เชฒเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ .dockerignore. เชคเชฎเซ‡, เชœเซ‹ เชคเชฎเซ‡ เชซเชพเช‡เชฒเชฅเซ€ เชชเชฐเชฟเชšเชฟเชค เช›เซ‹ .gitignore, เช† เชซเชพเช‡เชฒเชจเซเช‚ เชฎเชพเชณเช–เซเช‚ เช•เชฆเชพเชš เชชเชฐเชฟเชšเชฟเชค เชฒเชพเช—เชถเซ‡. เชคเซ‡ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เช“เชจเซ€ เชฏเชพเชฆเซ€ เช†เชชเซ‡ เช›เซ‡ เชœเซ‡เชจเซ‡ เชˆเชฎเซ‡เชœ เชฌเชฟเชฒเซเชก เชธเชฟเชธเซเชŸเชฎ เช…เชตเช—เชฃเซ€ เชถเช•เซ‡ เช›เซ‡. เช…เชฎเชพเชฐเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เช† เชซเชพเช‡เชฒเชจเซ€ เชธเชพเชฎเช—เซเชฐเซ€ เช†เชจเชพ เชœเซ‡เชตเซ€ เชฆเซ‡เช–เชพเชฏ เช›เซ‡:

node_modules
src
public

เชซเชพเชˆเชฒ .dockerignore เชซเชพเช‡เชฒ เชœเซ‡เชตเชพ เชœ เชซเซ‹เชฒเซเชกเชฐเชฎเชพเช‚ เชนเซ‹เชตเซ€ เชœเซ‹เชˆเช Dockerfile. เชนเชตเซ‡ เช›เชฌเซ€เชจเซ€ เชเชธเซ‡เชฎเซเชฌเชฒเซ€ เชฅเซ‹เชกเซ€ เชธเซ‡เช•เช‚เชก เชฒเซ‡เชถเซ‡.

เชšเชพเชฒเซ‹ เชนเชตเซ‡ เชœเชพเชตเชพ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฎเชพเชŸเซ‡ เช‡เชฎเซ‡เชœ เชธเชพเชฅเซ‡ เชตเซเชฏเชตเชนเชพเชฐ เช•เชฐเซ€เช.

โ–เชœเชพเชตเชพ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฎเชพเชŸเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เช‡เชฎเซ‡เชœ เชฌเชจเชพเชตเชตเซ€

เชคเชฎเซ‡ เชœเชพเชฃเซ‹ เช›เซ‹ เช•เซ‡ เชถเซเช‚, เช…เชจเซ‡ เชคเชฎเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เช›เชฌเซ€เช“ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เชฌเชงเซเช‚ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เชถเซ€เช–เซ€ เชฒเซ€เชงเซเช‚ เช›เซ‡. เชคเซ‡เชฅเซ€ เชœ เช† เชตเชฟเชญเชพเช— เช–เซ‚เชฌ เชŸเซ‚เช‚เช•เซ‹ เชนเชถเซ‡.

เชซเชพเชˆเชฒ เช–เซ‹เชฒเซ‹ Dockerfile, เชœเซ‡ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชซเซ‹เชฒเซเชกเชฐเชฎเชพเช‚ เชธเซเชฅเชฟเชค เช›เซ‡ sa-webapp. เชœเซ‹ เชคเชฎเซ‡ เช† เชซเชพเช‡เชฒเชจเซเช‚ เชฒเช–เชพเชฃ เชตเชพเช‚เชšเชถเซ‹, เชคเซ‹ เชคเซ‡เชฎเชพเช‚ เชคเชฎเชจเซ‡ เชซเช•เซเชค เชฌเซ‡ เชจเชตเชพ เชฌเชพเช‚เชงเช•เชพเชฎเซ‹ เชฎเชณเชถเซ‡ เชœเซ‡ เช•เซ€เชตเชฐเซเชกเซเชธเชฅเซ€ เชถเชฐเซ‚ เชฅเชพเชฏ เช›เซ‡ ENV ะธ EXPOSE:

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

เช•เซ€เชตเชฐเซเชก ENV เชคเชฎเชจเซ‡ เชกเซ‹เช•เชฐ เช•เชจเซเชŸเซ‡เชจเชฐเชจเซ€ เช…เช‚เชฆเชฐ เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชšเชฒเซ‹ เชœเชพเชนเซ‡เชฐ เช•เชฐเชตเชพเชจเซ€ เชชเชฐเชตเชพเชจเช—เซ€ เช†เชชเซ‡ เช›เซ‡. เช–เชพเชธ เช•เชฐเซ€เชจเซ‡, เช…เชฎเชพเชฐเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชคเซ‡ เชคเชฎเชจเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเชพ API เชจเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชเช• URL เชธเซ‡เชŸ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡ เชœเซ‡ เชŸเซ‡เช•เซเชธเซเชŸ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเซ‡ เช›เซ‡.

เช•เซ€เชตเชฐเซเชก EXPOSE เชคเชฎเชจเซ‡ เชกเซ‹เช•เชฐเชจเซ‡ เชชเซ‹เชฐเซเชŸ เช–เซ‹เชฒเชตเชพ เชฎเชพเชŸเซ‡ เช•เชนเซ‡เชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡. เช…เชฎเซ‡ เช† เชชเซ‹เชฐเซเชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชœเชˆ เชฐเชนเซเชฏเชพ เช›เซ€เช เช•เชพเชฐเชฃ เช•เซ‡ เช…เชฎเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเซ€เช เช›เซ€เช. เช…เชนเซ€เช‚ เชคเชฎเซ‡ เชคเซ‡ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹ Dockerfile เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฎเชพเชŸเซ‡ SA-Frontend เชเชตเซ‹ เช•เซ‹เชˆ เช†เชฆเซ‡เชถ เชจเชฅเซ€. เช† เชฎเชพเชคเซเชฐ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃ เชนเซ‡เชคเซ เชฎเชพเชŸเซ‡ เช›เซ‡, เชฌเซ€เชœเชพ เชถเชฌเซเชฆเซ‹เชฎเชพเช‚ เช•เชนเซ€เช เชคเซ‹, เช† เชฐเชšเชจเชพ เชตเชพเชšเช• เชฎเชพเชŸเซ‡ เช›เซ‡ Dockerfile.

เชˆเชฎเซ‡เชœ เชฌเชจเชพเชตเชตเซ€ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€เชฎเชพเช‚ เชงเช•เซ‡เชฒเชตเซ€ เช เชชเชนเซ‡เชฒเชพเชจเชพ เช‰เชฆเชพเชนเชฐเชฃเชจเซ€ เชœเซ‡เชฎ เชฌเชฐเชพเชฌเชฐ เชฆเซ‡เช–เชพเชฏ เช›เซ‡. เชœเซ‹ เชคเชฎเซ‡ เชนเชœเซ เชธเซเชงเซ€ เชคเชฎเชพเชฐเซ€ เช•เซเชทเชฎเชคเชพเช“เชฎเชพเช‚ เช–เซ‚เชฌ เชตเชฟเชถเซเชตเชพเชธ เชงเชฐเชพเชตเชคเชพ เชจเชฅเซ€, เชคเซ‹ เช…เชจเซเชฐเซ‚เชช เช†เชฆเซ‡เชถเซ‹ เชซเชพเช‡เชฒเชฎเชพเช‚ เชฎเชณเซ€ เชถเช•เซ‡ เช›เซ‡. README.md เชซเซ‹เชฒเซเชกเชฐเชฎเชพเช‚ sa-webapp.

โ–Python เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฎเชพเชŸเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เช‡เชฎเซ‡เชœ เชฌเชจเชพเชตเชตเซ€

เชœเซ‹ เชคเชฎเซ‡ เชซเชพเช‡เชฒเชจเซ€ เชธเชพเชฎเช—เซเชฐเซ€เช“ เชชเชฐ เชเช• เชจเชœเชฐ เชจเชพเช–เซ‹ Dockerfile เชซเซ‹เชฒเซเชกเชฐเชฎเชพเช‚ sa-logicเชคเชฎเชจเซ‡ เชคเซเชฏเชพเช‚ เช•เช‚เชˆเชชเชฃ เชจเชตเซเช‚ เชฎเชณเชถเซ‡ เชจเชนเซ€เช‚. เช‡เชฎเซ‡เชœ เชฌเชจเชพเชตเชตเชพ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชฐเชฟเชชเซ‹เชเซ€เชŸเชฐเซ€เชฎเชพเช‚ เชงเช•เซ‡เชฒเชตเชพ เชฎเชพเชŸเซ‡เชจเชพ เช†เชฆเซ‡เชถเซ‹ เชคเชฎเชจเซ‡ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชชเชฐเชฟเชšเชฟเชค เชนเซ‹เชตเชพ เชœเซ‹เชˆเช, เชชเชฐเช‚เชคเซ, เช…เชฎเชพเชฐเซ€ เช…เชจเซเชฏ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซ‹เชจเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชคเซ‡ เชซเชพเช‡เชฒเชฎเชพเช‚ เชฎเชณเซ€ เชถเช•เซ‡ เช›เซ‡. README.md เชซเซ‹เชฒเซเชกเชฐเชฎเชพเช‚ sa-logic.

โ– เช•เชจเซเชŸเซ‡เชจเชฐเชพเช‡เชเซเชก เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธเชจเซเช‚ เชชเชฐเซ€เช•เซเชทเชฃ

เชถเซเช‚ เชคเชฎเซ‡ เชเชตเซ€ เช•เซ‹เชˆ เชตเชธเซเชคเซ เชชเชฐ เชตเชฟเชถเซเชตเชพเชธ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เชœเซ‡เชจเซ€ เชคเชฎเซ‡ เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเซ€ เชจเชฅเซ€? เชนเซเช‚ เชชเชฃ เชจเชฅเซ€ เช•เชฐเซ€ เชถเช•เชคเซ‹. เชšเชพเชฒเซ‹ เช…เชฎเชพเชฐเชพ เช•เชจเซเชŸเซ‡เชจเชฐเชจเซเช‚ เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเซ€เช.

  1. เชšเชพเชฒเซ‹ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช•เชจเซเชŸเซ‡เชจเชฐ เชถเชฐเซ‚ เช•เชฐเซ€เช sa-logic เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชชเซ‹เชฐเซเชŸ เชชเชฐ เชธเชพเช‚เชญเชณเชตเชพ เชฎเชพเชŸเซ‡ เช—เซ‹เช เชตเซ‹ 5050:
    docker run -d -p 5050:5000 $DOCKER_USER_ID/sentiment-analysis-logic
  2. เชšเชพเชฒเซ‹ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช•เชจเซเชŸเซ‡เชจเชฐ เชถเชฐเซ‚ เช•เชฐเซ€เช sa-webapp เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชชเซ‹เชฐเซเชŸ เชชเชฐ เชธเชพเช‚เชญเชณเชตเชพ เชฎเชพเชŸเซ‡ เช—เซ‹เช เชตเซ‹ 8080. เชตเชงเซเชฎเชพเช‚, เช…เชฎเชพเชฐเซ‡ เชคเซ‡ เชชเซ‹เชฐเซเชŸ เชธเซ‡เชŸ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เช•เซ‡ เชœเซ‡เชจเชพ เชชเชฐ เชชเชพเชฏเชฅเซ‹เชจ เชเชชเซเชฒเซ€เช•เซ‡เชถเชจ เชเชจเซเชตเชพเชฏเชฐเซเชจเชฎเซ‡เชจเซเชŸ เชตเซ‡เชฐเซ€เชเชฌเชฒเชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชธเซ‹เช‚เชชเซ€เชจเซ‡ 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

เช•เชจเซเชŸเซ‡เชจเชฐ เช…เชฅเชตเชพ เชกเซ‹เช•เชฐ VM เชจเซเช‚ IP เชธเชฐเชจเชพเชฎเซเช‚ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชถเซ‹เชงเชตเซเช‚ เชคเซ‡ เชœเชพเชฃเชตเชพ เชฎเชพเชŸเซ‡, เชซเชพเช‡เชฒเชจเซ‹ เชธเช‚เชฆเชฐเซเชญ เชฒเซ‹ README.

เชšเชพเชฒเซ‹ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช•เชจเซเชŸเซ‡เชจเชฐ เชถเชฐเซ‚ เช•เชฐเซ€เช sa-frontend:

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

เชนเชตเซ‡ เชฌเซเชฐเชพเช‰เชเชฐเชฎเชพเช‚ เชธเชฐเชจเชพเชฎเชพเช‚ เชชเชฐ เชจเซ‡เชตเชฟเช—เซ‡เชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฌเชงเซเช‚ เชคเซˆเชฏเชพเชฐ เช›เซ‡ localhost:80 เช…เชจเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซเช‚ เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเซ‹.

เชฎเชนเซ‡เชฐเชฌเชพเชจเซ€ เช•เชฐเซ€เชจเซ‡ เชจเซ‹เช‚เชง เช•เชฐเซ‹ เช•เซ‡ เชœเซ‹ เชคเชฎเซ‡ เชฎเชพเชŸเซ‡ เชชเซ‹เชฐเซเชŸ เชฌเชฆเชฒเซ‹ เช›เซ‹ sa-webapp, เช…เชฅเชตเชพ เชœเซ‹ เชคเชฎเซ‡ Docker VM เชšเชฒเชพเชตเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ‹, เชคเซ‹ เชคเชฎเชพเชฐเซ‡ เชซเชพเช‡เชฒเชจเซ‡ เชธเช‚เชชเชพเชฆเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡ App.js เชซเซ‹เชฒเซเชกเชฐเชฎเชพเช‚เชฅเซ€ sa-frontendเชชเชฆเซเชงเชคเชฟเชฎเชพเช‚ IP เชธเชฐเชจเชพเชฎเซเช‚ เช…เชฅเชตเชพ เชชเซ‹เชฐเซเชŸ เชจเช‚เชฌเชฐ เชฌเชฆเชฒเซ€เชจเซ‡ analyzeSentence()เช…เชชเซเชฐเชšเชฒเชฟเชค เชกเซ‡เชŸเชพเชจเซ‡ เชฌเชฆเชฒเซ‡ เชตเชฐเซเชคเชฎเชพเชจ เชฎเชพเชนเชฟเชคเซ€เชจเซ‡ เชฌเชฆเชฒเซ€เชจเซ‡. เชคเซ‡ เชชเช›เซ€, เชคเชฎเชพเชฐเซ‡ เช›เชฌเซ€เชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชเชธเซ‡เชฎเซเชฌเชฒ เช•เชฐเชตเชพเชจเซ€ เช…เชจเซ‡ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

เช† เช…เชฎเชพเชฐเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชกเชพเชฏเชพเช—เซเชฐเชพเชฎ เชนเชตเซ‡ เชœเซ‡เชตเซ‹ เชฆเซ‡เช–เชพเชฏ เช›เซ‡.

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชŸเซเชฏเซเชŸเซ‹เชฐเซ€เชฏเชฒ เชญเชพเช— 1: เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธ, เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธเชฟเชธ เช…เชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ
เชฎเชพเชˆเช•เซเชฐเซ‹ เชธเชฐเซเชตเชฟเชธ เช•เชจเซเชŸเซ‡เชจเชฐเชฎเชพเช‚ เชšเชพเชฒเซ‡ เช›เซ‡

เชธเชพเชฐเชพเช‚เชถ: เชถเชพ เชฎเชพเชŸเซ‡ เช†เชชเชฃเชจเซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เช•เซเชฒเชธเซเชŸเชฐเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡?

เช…เชฎเซ‡ เชนเชฎเชฃเชพเช‚ เชœ เชซเชพเช‡เชฒเซ‹เชจเซ€ เชธเชฎเซ€เช•เซเชทเชพ เช•เชฐเซ€ เช›เซ‡ Dockerfile, เช›เชฌเซ€เช“ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฌเชจเชพเชตเชตเซ€ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชกเซ‹เช•เชฐ เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€เชฎเชพเช‚ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชงเช•เซ‡เชฒเชตเซ€ เชคเซ‡ เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซ€. เชตเชงเซเชฎเชพเช‚, เช…เชฎเซ‡ เชซเชพเช‡เชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช›เชฌเซ€เช“เชจเซ€ เชเชธเซ‡เชฎเซเชฌเชฒเซ€เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชเชกเชชเซ€ เช•เชฐเชตเซ€ เชคเซ‡ เชถเซ€เช–เซเชฏเชพ .dockerignore. เชชเชฐเชฟเชฃเชพเชฎเซ‡, เช…เชฎเชพเชฐเซ€ เชฎเชพเช‡เช•เซเชฐเซ‹เชธเซ‡เชตเชพเช“ เชนเชตเซ‡ เชกเซ‹เช•เชฐ เช•เชจเซเชŸเซ‡เชจเชฐเชฎเชพเช‚ เชšเชพเชฒเซ€ เชฐเชนเซ€ เช›เซ‡. เช…เชนเซ€เช‚ เชคเชฎเชจเซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชจเซ€ เชถเชพ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐ เช›เซ‡ เชคเซ‡ เชตเชฟเชถเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชตเชพเชœเชฌเซ€ เชชเซเชฐเชถเซเชจ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡. เช† เชชเซเชฐเชถเซเชจเชจเซ‹ เชœเชตเชพเชฌ เช† เชธเชพเชฎเช—เซเชฐเซ€เชจเชพ เชฌเซ€เชœเชพ เชญเชพเช—เชจเซ‡ เชธเชฎเชฐเซเชชเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡. เชคเซ‡ เชฆเชฐเชฎเชฟเชฏเชพเชจ, เชจเซ€เชšเซ‡เชจเชพ เชชเซเชฐเชถเซเชจเชจเซ‹ เชตเชฟเชšเชพเชฐ เช•เชฐเซ‹:
เชšเชพเชฒเซ‹ เชงเชพเชฐเซ€เช เช•เซ‡ เช…เชฎเชพเชฐเซ€ เชŸเซ‡เช•เซเชธเซเชŸ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เชตเซ‡เชฌ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชตเชฟเชถเซเชตเชญเชฐเชฎเชพเช‚ เชฒเซ‹เช•เชชเซเชฐเชฟเชฏ เชฌเชจเซ€ เช›เซ‡. เชคเซ‡เชจเซ€ เชชเชพเชธเซ‡ เชฆเชฐ เชฎเชฟเชจเชฟเชŸเซ‡ เชฒเชพเช–เซ‹ เชตเชฟเชจเช‚เชคเซ€เช“ เช†เชตเซ‡ เช›เซ‡. เช†เชจเซ‹ เช…เชฐเซเชฅ เช เช›เซ‡ เช•เซ‡ เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธเชฟเชธ sa-webapp ะธ sa-logic เชญเชพเชฐเซ‡ เชคเชฃเชพเชตเชฎเชพเช‚ เชฐเชนเซ‡เชถเซ‡. เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธ เชšเชฒเชพเชตเชคเชพ เช•เชจเซเชŸเซ‡เชจเชฐเชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฎเชพเชชเชตเชพ?

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชŸเซเชฏเซเชŸเซ‹เชฐเซ€เชฏเชฒ เชญเชพเช— 1: เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธ, เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธเชฟเชธ เช…เชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹