เด•เตเดฌเต†เตผเดจเต†เดฑเตเดฑเดธเต เดŸเตเดฏเต‚เดŸเตเดŸเต‹เดฑเดฟเดฏเตฝ เดญเดพเด—เด‚ 1: เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ, เดฎเตˆเด•เตเดฐเต‹เดธเตผเดตเต€เดธเตเด•เตพ, เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเตเด•เตพ

เดžเด™เตเด™เดณเตเดŸเต† เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดชเตเดฐเด•เดพเดฐเด‚, เดนเดฌเตเตผ เด’เดฐเต เดนเดฌเต เดธเตƒเดทเตเดŸเดฟเดšเตเดšเต เด•เตเดฌเต‡เตผเดจเต†เดฑเตเดฑเต เด†เดฆเตเดฏเดคเตเดคเต† เดชเตเดฐเดธเดฟเดฆเตเดงเต€เด•เดฐเดฃเด‚ เด…เดคเดฟเตฝ เด‡เดŸเตเดจเตเดจเดคเดฟเตฝ เดžเด™เตเด™เตพเด•เตเด•เต เดธเดจเตเดคเต‹เดทเดฎเตเดฃเตเดŸเต. เดธเดฌเตเดธเตเด•เตเดฐเตˆเดฌเต เดšเต†เดฏเตเดฏเตเด•!

เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เดŽเดณเตเดชเตเดชเดฎเดพเดฃเต. เดˆ เดฎเต‡เด–เดฒเดฏเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เดฌเดพเด™เตเด•เตเด•เตพ เดŽเดจเดฟเด•เตเด•เต เดงเดพเดฐเดพเดณเด‚ เดชเดฃเด‚ เดจเตฝเด•เตเดจเตเดจเดคเต เดŽเดจเตเดคเดฟเดจเดพเดฃเต, เดŽเดจเตเดจเดพเตฝ เดเดคเดพเดจเตเด‚ เดฎเดฃเดฟเด•เตเด•เต‚เดฑเตเด•เตพเด•เตเด•เตเดณเตเดณเดฟเตฝ เด†เตผเด•เตเด•เตเด‚ เดˆ เดธเดพเด™เตเด•เต‡เดคเดฟเด•เดตเดฟเดฆเตเดฏเดฏเดฟเตฝ เดชเตเดฐเดพเดตเต€เดฃเตเดฏเด‚ เดจเต‡เดŸเดพเดจเดพเด•เตเด‚?

เด•เตเดฌเต†เตผเดจเต†เดฑเตเดฑเดธเต เดŸเตเดฏเต‚เดŸเตเดŸเต‹เดฑเดฟเดฏเตฝ เดญเดพเด—เด‚ 1: เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ, เดฎเตˆเด•เตเดฐเต‹เดธเตผเดตเต€เดธเตเด•เตพ, เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเตเด•เตพ

เด•เตเดฌเต†เตผเดจเต†เดฑเตเดฑเดธเต เด‡เดคเตเดฐ เดตเต‡เด—เดคเตเดคเดฟเตฝ เดชเด เดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเดฎเต†เดจเตเดจเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดธเด‚เดถเดฏเดฎเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เด…เดคเต เดธเตเดตเดฏเด‚ เดชเดฐเต€เด•เตเดทเดฟเด•เตเด•เดพเตป เดžเดพเตป เดจเดฟเตผเดฆเตเดฆเต‡เดถเดฟเด•เตเด•เตเดจเตเดจเต. เด…เดคเดพเดฏเดคเต, เดˆ เดฎเต†เดฑเตเดฑเต€เดฐเดฟเดฏเดฒเดฟเตฝ เดตเตˆเดฆเด—เตเดฆเตเดงเตเดฏเด‚ เดจเต‡เดŸเดฟเดฏ เดถเต‡เดทเด‚, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเต† เดฎเตˆเด•เตเดฐเต‹เดธเตผเดตเต€เดธเตเด•เดณเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟ เด’เดฐเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚. เด•เตเดฌเต†เตผเดจเต†เดฑเตเดฑเดธเดฟเดจเตŠเดชเตเดชเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เดžเด™เตเด™เดณเตเดŸเต† เด•เตเดฒเดฏเดจเตเดฑเตเด•เดณเต† เดžเดพเตป เดชเด เดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเต เด‡เดตเดฟเดŸเต† เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด…เดคเต‡ เดฐเต€เดคเดฟเดถเดพเดธเตเดคเตเดฐเดฎเดพเดฏเดคเดฟเดจเดพเตฝ เดŽเดจเดฟเด•เตเด•เต เด‡เดคเต เด‰เดฑเดชเตเดชเต เดจเตฝเด•เดพเตป เด•เดดเดฟเดฏเตเด‚. เดˆ เด—เตˆเดกเดฟเดจเต† เดฎเดฑเตเดฑเตเดณเตเดณเดตเดฐเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเด•เตเด•เตเดจเตเดจเดคเต เดŽเดจเตเดคเดพเดฃเต? เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ, เด’เดฐเตเดชเดพเดŸเต เด•เดพเดฐเตเดฏเด™เตเด™เดณเตเดฃเตเดŸเต. เด…เดคเดฟเดจเดพเตฝ, เดˆ เดฎเต†เดฑเตเดฑเต€เดฐเดฟเดฏเดฒเตเด•เดณเดฟเตฝ เดญเต‚เดฐเดฟเดญเดพเด—เดตเตเด‚ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเต เดฒเดณเดฟเดคเดฎเดพเดฏ เด•เดพเดฐเตเดฏเด™เตเด™เดณเตเดŸเต† เดตเดฟเดถเดฆเต€เด•เดฐเดฃเดคเตเดคเต‹เดŸเต†เดฏเดพเดฃเต - เด•เตเดฌเต†เตผเดจเต†เดฑเตเดฑเดธเดฟเดจเตเดฑเต† เด†เดถเดฏเด™เตเด™เดณเตเด‚ kubectl เด•เดฎเดพเตปเดกเดฟเดจเตเดฑเต† เดธเดตเดฟเดถเต‡เดทเดคเด•เดณเตเด‚. เดˆ เดฎเต†เดฑเตเดฑเต€เดฐเดฟเดฏเดฒเตเด•เดณเตเดŸเต† เดฐเดšเดฏเดฟเดคเดพเด•เตเด•เตพ เด…เดตเดฐเตเดŸเต† เดตเดพเดฏเดจเด•เตเด•เดพเตผเด•เตเด•เต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดตเดฟเด•เดธเดจเด‚, เดฎเตˆเด•เตเดฐเต‹เดธเตผเดตเต€เดธเตเด•เตพ, เดกเต‹เด•เตเด•เตผ เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเตเด•เตพ เดŽเดจเตเดจเดฟเดตเดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดชเดฐเดฟเดšเดฟเดคเดฎเดพเดฃเต†เดจเตเดจเต เด…เดจเตเดฎเดพเดจเดฟเด•เตเด•เตเดจเตเดจเต. เดžเด™เตเด™เตพ เดฎเดฑเตเดฑเตŠเดฐเต เดตเดดเดฟเด•เตเด•เต เดชเต‹เด•เตเด‚. เด†เดฆเตเดฏเด‚, เด’เดฐเต เด•เดฎเตเดชเตเดฏเต‚เดŸเตเดŸเดฑเดฟเดฒเต† เดฎเตˆเด•เตเดฐเต‹เดธเตผเดตเต€เดธเตเด•เดณเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟ เด’เดฐเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดŽเด™เตเด™เดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเด‚ เดŽเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดจเดฎเตเดฎเตพ เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เตเด‚. เด…เดชเตเดชเต‹เตพ เดจเดฎเตเดฎเตพ เด“เดฐเต‹ เดฎเตˆเด•เตเดฐเต‹เดธเตผเดตเต€เดธเดฟเดจเตเด‚ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเตผ เด‡เดฎเต‡เดœเตเด•เตพ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจเดคเต เดจเต‹เด•เตเด•เดพเด‚. เด…เดคเดฟเดจเตเดถเต‡เดทเด‚, เดžเด™เตเด™เตพ Kubernetes-เดจเต† เดชเดฐเดฟเดšเดฏเดชเตเดชเต†เดŸเตเด•เดฏเตเด‚ Kubernetes เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเตฝ microservices เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟเดฏเตเดณเตเดณ เด’เดฐเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เตเดจเตเดจเดคเต เดจเต‹เด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚.

เด•เตเดฌเต†เตผเดจเต†เดฑเตเดฑเดธเดฟเดจเต‹เดŸเต เด•เตเดฐเดฎเดพเดจเตเด—เดคเดฎเดพเดฏ เดธเดฎเต€เดชเดจเดคเตเดคเต‹เดŸเต†เดฏเตเดณเตเดณ เดˆ เดธเดฎเต€เดชเดจเด‚, เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเดฟเตฝ เดŽเดฒเตเดฒเดพเด‚ เดŽเดคเตเดฐ เดฒเดณเดฟเดคเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเต เดฎเดจเดธเดฟเดฒเดพเด•เตเด•เดพเตป เดถเดฐเดพเดถเดฐเดฟ เดตเตเดฏเด•เตเดคเดฟเด•เตเด•เต เดŽเดจเตเดคเดพเดฃเต เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจเดคเต†เดจเตเดจเต เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เดพเดจเตเดณเตเดณ เด†เดดเด‚ เดจเตฝเด•เตเด‚. เด•เตเดฌเต†เตผเดจเต†เดฑเตเดฑเดธเต เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚ เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดธเดพเด™เตเด•เต‡เดคเดฟเด•เดตเดฟเดฆเตเดฏเดฏเดพเดฃเต, เด…เดคเต เดชเด เดฟเด•เตเด•เดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเดตเตผเด•เตเด•เต เด…เดคเต เดŽเดตเดฟเดŸเต†, เดŽเด™เตเด™เดจเต† เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเต เด…เดฑเดฟเดฏเดพเดฎเต†เด™เตเด•เดฟเตฝ.

เด‡เดชเตเดชเต‹เตพ, เด•เต‚เดŸเตเดคเตฝ เดšเตผเดšเตเดš เดšเต†เดฏเตเดฏเดพเดคเต†, เดจเดฎเตเด•เตเด•เต เด†เดฐเด‚เดญเดฟเด•เตเด•เดพเด‚, เดžเด™เตเด™เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เดชเต‹เด•เตเดจเตเดจ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เดพเด‚.

เดชเดฐเต€เด•เตเดทเดฃเดพเดคเตเดฎเด• เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป

เดžเด™เตเด™เดณเตเดŸเต† เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด’เดฐเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เดฎเดพเดคเตเดฐเดฎเต‡ เดจเดฟเตผเดตเดนเดฟเด•เตเด•เต‚. เด‡เดคเต เด’เดฐเต เดตเดพเดšเด•เด‚ เด‡เตปเดชเตเดŸเตเดŸเดพเดฏเดฟ เดŽเดŸเตเด•เตเด•เตเดจเตเดจเต, เด…เดคเดฟเดจเตเดถเต‡เดทเด‚, เดŸเต†เด•เตเดธเตเดฑเตเดฑเต เด…เดจเดพเดฒเดฟเดธเดฟเดธเต เดŸเต‚เดณเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต, เด‡เดคเต เดˆ เดตเดพเด•เตเดฏเดคเตเดคเดฟเดจเตเดฑเต† เดตเดฟเด•เดพเดฐ เดตเดฟเดถเด•เดฒเดจเด‚ เดจเดŸเดคเตเดคเตเดจเตเดจเต, เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดตเดธเตเดคเตเดตเดฟเดจเต‹เดŸเตเดณเตเดณ เดตเดพเด•เตเดฏเดคเตเดคเดฟเดจเตเดฑเต† เดฐเดšเดฏเดฟเดคเดพเดตเดฟเดจเตเดฑเต† เดตเตˆเด•เดพเดฐเดฟเด• เดฎเดจเต‹เดญเดพเดตเดคเตเดคเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เด’เดฐเต เดตเดฟเดฒเดฏเดฟเดฐเตเดคเตเดคเตฝ เดจเต‡เดŸเตเดจเตเดจเต.

เดˆ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเดฑเต† เดชเตเดฐเดงเดพเดจ เดตเดฟเตปเดกเต‹ เด‡เด™เตเด™เดจเต†เดฏเดพเดฃเต.

เด•เตเดฌเต†เตผเดจเต†เดฑเตเดฑเดธเต เดŸเตเดฏเต‚เดŸเตเดŸเต‹เดฑเดฟเดฏเตฝ เดญเดพเด—เด‚ 1: เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ, เดฎเตˆเด•เตเดฐเต‹เดธเตผเดตเต€เดธเตเด•เตพ, เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเตเด•เตพ
เดŸเต†เด•เตเดธเตเดฑเตเดฑเตเด•เดณเตเดŸเต† เดตเดฟเด•เดพเดฐ เดตเดฟเดถเด•เดฒเดจเดคเตเดคเดฟเดจเตเดณเตเดณ เดตเต†เดฌเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป

เด’เดฐเต เดธเดพเด™เตเด•เต‡เดคเดฟเด• เดตเต€เด•เตเดทเดฃเด•เต‹เดฃเดฟเตฝ เดจเดฟเดจเตเดจเต, เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดฟเตฝ เดฎเต‚เดจเตเดจเต เดฎเตˆเด•เตเดฐเต‹เดธเตผเดตเต€เดธเตเด•เตพ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดตเดฏเดฟเตฝ เด“เดฐเต‹เดจเตเดจเตเด‚ เด’เดฐเต เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเดŸ เดœเต‹เดฒเดฟเด•เตพ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เตเดจเตเดจเต:

  • เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เดฑเดฟเดฏเดพเด•เตเดฑเตเดฑเต เดซเดฏเดฒเตเด•เตพ เดจเตฝเด•เตเดจเตเดจ เด’เดฐเต Nginx เดตเต†เดฌเต เดธเต†เตผเดตเดฑเดพเดฃเต SA-Frontend.
  • เดฎเตเตปเดตเดถเดคเตเดคเต เดจเดฟเดจเตเดจเตเดณเตเดณ เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจ เดœเดพเดตเดฏเดฟเตฝ เดŽเดดเตเดคเดฟเดฏ เด’เดฐเต เดตเต†เดฌเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดพเดฃเต SA-WebApp.
  • เดŸเต†เด•เตเดธเตเดฑเตเดฑเดฟเตฝ เดตเดฟเด•เดพเดฐ เดตเดฟเดถเด•เดฒเดจเด‚ เดจเดŸเดคเตเดคเตเดจเตเดจ เด’เดฐเต เดชเตˆเดคเตเดคเตบ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดพเดฃเต SA-Logic.

เดฎเตˆเด•เตเดฐเต‹เดธเตผเดตเต€เดธเตเด•เตพ เด’เดฑเตเดฑเดชเตเดชเต†เดŸเตเดŸ เดจเดฟเดฒเดฏเดฟเดฒเดฒเตเดฒ เดŽเดจเตเดจเดคเต เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเดพเดฃเต. เด…เดตเตผ "เด‰เดคเตเดคเดฐเดตเดพเดฆเดฟเดคเตเดคเด™เตเด™เตพ เดตเต‡เตผเดชเต†เดŸเตเดคเตเดคเตเด•" เดŽเดจเตเดจ เด†เดถเดฏเด‚ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเต, เดŽเดจเตเดจเดพเตฝ เด…เดคเต‡ เดธเดฎเดฏเด‚ เด…เดตเตผ เดชเดฐเดธเตเดชเดฐเด‚ เด‡เดŸเดชเดดเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต.

เด•เตเดฌเต†เตผเดจเต†เดฑเตเดฑเดธเต เดŸเตเดฏเต‚เดŸเตเดŸเต‹เดฑเดฟเดฏเตฝ เดญเดพเด—เด‚ 1: เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ, เดฎเตˆเด•เตเดฐเต‹เดธเตผเดตเต€เดธเตเด•เตพ, เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเตเด•เตพ
เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดฟเตฝ เดกเดพเดฑเตเดฑ เด’เดดเตเด•เตเดจเตเดจเต

เดฎเตเด•เดณเดฟเดฒเตเดณเตเดณ เดกเดฏเด—เตเดฐเดพเดฎเดฟเตฝ, เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดฟเดฒเต† เดกเดพเดฑเตเดฑเดพ เดซเตเดฒเต‹เด•เตพ เดšเดฟเดคเตเดฐเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจ เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดจเตเดฑเต† เด…เด•เตเด•เดฎเดฟเดŸเตเดŸ เด˜เดŸเตเดŸเด™เตเด™เตพ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดพเดฃเดพเตป เด•เดดเดฟเดฏเตเด‚. เดจเดฎเตเด•เตเด•เต เด…เดต เดจเต‹เด•เตเด•เดพเด‚:

  1. เดฌเตเดฐเต—เดธเตผ เดธเต†เตผเดตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เด’เดฐเต เดซเดฏเตฝ เด…เดญเตเดฏเตผเดคเตเดฅเดฟเด•เตเด•เตเดจเตเดจเต index.html (เด‡เดคเต, เดฑเดฟเดฏเดพเด•เตเดฑเตเดฑเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดชเดพเด•เตเด•เต‡เดœเต เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต).
  2. เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเดฎเดพเดฏเดฟ เดธเด‚เดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต, เด‡เดคเต เดธเตเดชเตเดฐเดฟเด‚เด—เต เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟเดฏเตเดณเตเดณ เดตเต†เดฌเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต เด•เต‹เดณเดฟเดจเต เด•เดพเดฐเดฃเดฎเดพเด•เตเดจเตเดจเต.
  3. เดŸเต†เด•เตเดธเตเดฑเตเดฑเต เดตเดฟเดถเด•เดฒเดจเด‚ เดจเดŸเดคเตเดคเดพเดจเตเดณเตเดณ เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดชเตˆเดคเตเดคเตบ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดฟเดฒเต‡เด•เตเด•เต เดตเต†เดฌเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด•เตˆเดฎเดพเดฑเตเดจเตเดจเต.
  4. เดชเตˆเดคเตเดคเตบ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดŸเต†เด•เตเดธเตเดฑเตเดฑเดฟเดจเตเดฑเต† เดตเดฟเด•เดพเดฐ เดตเดฟเดถเด•เดฒเดจเด‚ เดจเดŸเดคเตเดคเตเด•เดฏเตเด‚ เด…เดญเตเดฏเตผเดคเตเดฅเดจเดฏเตเด•เตเด•เตเดณเตเดณ เดชเตเดฐเดคเดฟเด•เดฐเดฃเดฎเดพเดฏเดฟ เดซเดฒเด‚ เดจเตฝเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.
  5. เดธเตเดชเตเดฐเดฟเด‚เด—เต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดฑเดฟเดฏเดพเด•เตเดฑเตเดฑเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต เดชเตเดฐเดคเดฟเด•เดฐเดฃเด‚ เด…เดฏเดฏเตเด•เตเด•เตเดจเตเดจเต (เด…เดคเต, เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเต เดŸเต†เด•เตเดธเตเดฑเตเดฑเต เดตเดฟเดถเด•เดฒเดจเดคเตเดคเดฟเดจเตเดฑเต† เดซเดฒเด‚ เด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจเต).

เดˆ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพเด•เตเด•เต†เดฒเตเดฒเดพเด‚ เด•เต‹เดกเต เด•เดฃเตเดŸเต†เดคเตเดคเดพเดจเดพเด•เตเด‚ เด‡เดตเดฟเดŸเต†. เดˆ เดถเต‡เด–เดฐเด‚ เด‡เดชเตเดชเต‹เตพ เดจเดฟเด™เตเด™เตพเด•เตเด•เดพเดฏเดฟ เดชเด•เตผเดคเตเดคเดพเตป เดžเดพเตป เดถเตเดชเดพเตผเดถ เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เด•เดพเดฐเดฃเด‚ เดฐเดธเด•เดฐเดฎเดพเดฏ เดจเดฟเดฐเดตเดงเดฟ เดชเดฐเต€เด•เตเดทเดฃเด™เตเด™เตพ เดžเด™เตเด™เตพเด•เตเด•เต เดฎเตเดจเตเดจเดฟเดฒเตเดฃเตเดŸเต.

เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเดพเดฆเต‡เดถเดฟเด• เดฎเต†เดทเต€เดจเดฟเตฝ เด’เดฐเต เดฎเตˆเด•เตเดฐเต‹เดธเตผเดตเต€เดธเต เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟเดฏเตเดณเตเดณ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต

เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดžเด™เตเด™เตพ เดฎเต‚เดจเตเดจเต เดฎเตˆเด•เตเดฐเต‹เดธเตผเดตเต€เดธเตเด•เดณเตเด‚ เด†เดฐเด‚เดญเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เด…เดตเดฏเดฟเตฝ เดเดฑเตเดฑเดตเตเด‚ เดญเด‚เด—เดฟเดฏเตเดณเตเดณเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเดฎเตเด•เตเด•เต เด†เดฐเด‚เดญเดฟเด•เตเด•เดพเด‚ - เดซเตเดฐเดฃเตเดŸเต-เดŽเตปเดกเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป.

โ–เดชเตเดฐเดพเดฆเต‡เดถเดฟเด• เดตเดฟเด•เดธเดจเดคเตเดคเดฟเดจเดพเดฏเดฟ เดฑเดฟเดฏเดพเด•เตเดฑเตเดฑเต เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเด•

เด’เดฐเต เดฑเดฟเดฏเดพเด•เตเดฑเตเดฑเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดจเดฟเด™เตเด™เดณเตเดŸเต† เด•เดฎเตเดชเตเดฏเต‚เดŸเตเดŸเดฑเดฟเตฝ Node.js เดชเตเดฒเดพเดฑเตเดฑเตโ€Œเดซเต‹เดฎเตเด‚ NPM-เด‰เด‚ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เดจเดฟเด™เตเด™เตพ เด‡เดคเต†เดฒเตเดฒเดพเด‚ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดคเตเด•เดดเดฟเดžเตเดžเดพเตฝ, เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดซเต‹เตพเดกเดฑเดฟเดฒเต‡เด•เตเด•เต เดจเดพเดตเดฟเด—เต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเดพเตป เดŸเต†เตผเดฎเดฟเดจเตฝ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด• sa-frontend เดคเดพเดดเต† เดชเดฑเดฏเตเดจเตเดจ เด•เดฎเดพเตปเดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•:

npm install

เดซเต‹เตพเดกเดฑเดฟเตฝ เดˆ เด•เดฎเดพเตปเดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต† node_modules เดฑเดฟเดฏเดพเด•เตเดฑเตเดฑเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเดฑเต† เดกเดฟเดชเตปเดกเตปเดธเดฟเด•เตพ เดฒเต‹เดกเต เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเตเด‚, เด…เดคเดฟเดจเตเดฑเต† เดฐเต‡เด–เด•เตพ เดซเดฏเดฒเดฟเดฒเตเดฃเตเดŸเต package.json. เดกเดฟเดชเตปเดกเตปเดธเดฟเด•เตพ เด’เดฐเต‡ เดซเต‹เตพเดกเดฑเดฟเตฝ เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตโ€Œเดคเตเด•เดดเดฟเดžเตเดžเดพเตฝ, เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เด•เดฎเดพเตปเดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•:

npm start

เด…เดคเตเดฐเดฏเต‡เดฏเตเดณเตเดณเต‚. เด‡เดชเตเดชเต‹เตพ เดฑเดฟเดฏเดพเด•เตเดฑเตเดฑเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต, เดจเดฟเด™เตเด™เดณเตเดŸเต† เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต† เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดตเดฟเดฒเดพเดธเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เดฏเดฟ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด…เดคเต เด†เด•เตโ€Œเดธเดธเต เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚: 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. POST เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดจเดŸเดคเตเดคเดฟเดฏ URL. เด…เดคเตเดคเดฐเด‚ เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เดชเตเดฐเดคเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เด…เดชเต‡เด•เตเดท เดˆ เดตเดฟเดฒเดพเดธเดคเตเดคเดฟเตฝ เด‰เดฃเตเดŸเต†เดจเตเดจเต เด…เดจเตเดฎเดพเดจเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเต.

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. เด‡เดตเดฟเดŸเต†เดฏเดพเดฃเต เดœเดพเดต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดธเตเดฅเดฟเดคเดฟ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต, เด’เดฐเต เดœเดพเตผ เดซเดฏเดฒเดฟเตฝ เดชเดพเด•เตเด•เต‡เดœเตเดšเต†เดฏเตโ€Œเดคเต, เดซเดฏเตฝ เดชเตเดฐเดคเดฟเดจเดฟเดงเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต 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

เดˆ เดตเดธเตเดคเตเดตเดฟเดจเตเดฑเต† เดฎเต‚เดฒเตเดฏเด‚ เดžเด™เตเด™เดณเตเดŸเต† เดชเตˆเดคเตเดคเตบ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเดฑเต† เดตเดฟเดฒเดพเดธเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดšเต‚เดฃเตเดŸเดฟเด•เตเด•เดพเดฃเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เดฃเด‚.

เด‡เดคเต เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต†, เดŸเต†เด•เตเดธเตเดฑเตเดฑเต เดตเดฟเดถเด•เดฒเดจ เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เดจเดŸเดคเตเดคเดพเตป เด…เดคเต เดŽเดตเดฟเดŸเต† เดชเต‹เด•เดฃเดฎเต†เดจเตเดจเต เดžเด™เตเด™เตพ เดธเตเดชเตเดฐเดฟเด‚เด—เต เดตเต†เดฌเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเต‹เดŸเต เดชเดฑเดฏเตเดจเตเดจเต.

เดžเด™เตเด™เดณเตเดŸเต† เดœเต€เดตเดฟเดคเด‚ เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดพเด•เตเด•เดพเดคเดฟเดฐเดฟเด•เตเด•เดพเตป, เดชเตˆเดคเตเดคเตบ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด‡เดตเดฟเดŸเต† เดฒเดญเตเดฏเดฎเดพเด•เตเดฎเต†เดจเตเดจเต เดžเด™เตเด™เตพ เดคเต€เดฐเตเดฎเดพเดจเดฟเด•เตเด•เตเด‚ localhost:5000 เด…เดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดฎเดฑเด•เตเด•เดพเดคเดฟเดฐเดฟเด•เตเด•เดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เดพเด‚. เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เดธเตเดชเตเดฐเดฟเด‚เด—เต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด•เดฎเดพเตปเดกเต เด‡เดคเตเดชเต‹เดฒเต† เด•เดพเดฃเดชเตเดชเต†เดŸเตเด‚:

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

เด•เตเดฌเต†เตผเดจเต†เดฑเตเดฑเดธเต เดŸเตเดฏเต‚เดŸเตเดŸเต‹เดฑเดฟเดฏเตฝ เดญเดพเด—เด‚ 1: เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ, เดฎเตˆเด•เตเดฐเต‹เดธเตผเดตเต€เดธเตเด•เตพ, เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเตเด•เตพ
เดžเด™เตเด™เดณเตเดŸเต† เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเตฝ เด’เดฐเต เดชเตˆเดคเตเดคเตบ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดจเดทเตโ€ŒเดŸเดฎเดพเดฏเดฟ

เด‡เดชเตเดชเต‹เตพ เดจเดฎเตเดฎเตพ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเต เดชเตˆเดคเตเดคเตบ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•, เดธเดฟเดธเตเดฑเตเดฑเด‚ เดชเตเดฐเดคเต€เด•เตเดทเดฟเดšเตเดšเดคเตเดชเต‹เดฒเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด‚.

โ–เด’เดฐเต เดชเตˆเดคเตเดคเตบ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต

เด’เดฐเต เดชเตˆเดคเตเดคเตบ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดจเดฟเด™เตเด™เตพ เดชเตˆเดคเตเดคเตบ 3, เดชเดฟเดชเตเดชเต เดŽเดจเตเดจเดฟเดต เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดคเดฟเดฐเดฟเด•เตเด•เดฃเด‚, เด•เต‚เดŸเดพเดคเต† เด‰เดšเดฟเดคเดฎเดพเดฏ เดŽเตปเดตเดฏเต‹เตบเดฎเต†เดจเตเดฑเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เตพ เดถเดฐเดฟเดฏเดพเดฏเดฟ เดธเดœเตเดœเต€เด•เดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เดฃเด‚.

โ–เดกเดฟเดชเตปเดกเตปเดธเดฟเด•เตพ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเดจเตเดจเต

เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดซเต‹เตพเดกเดฑเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเด• 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/

โ–เด•เต‹เดกเต เด—เดตเต‡เดทเดฃเด‚

เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เดณเต‹เดŸเต เดŽเด™เตเด™เดจเต† เดชเตเดฐเดคเดฟเด•เดฐเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเต เดฎเดจเดธเดฟเดฒเดพเด•เตเด•เดพเตป เดชเตˆเดคเตเดคเตบ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด•เต‹เดกเต เดจเต‹เด•เตเด•เดพเด‚:

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 เดŸเต†เด•เตเดธเตเดฑเตเดฑเต เดซเต€เตฝเดกเดฟเดจเต เดคเดพเดดเต†เดฏเตเดณเตเดณ เดตเดฟเดถเด•เดฒเดจ เดซเดฒเด™เตเด™เตพ เดจเดฟเด™เตเด™เตพ เด•เดพเดฃเตเด‚.

เด…เดŸเตเดคเตเดค เดตเดฟเดญเดพเด—เดคเตเดคเดฟเตฝ, เดกเต‹เด•เตเด•เตผ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เดณเดฟเตฝ เดžเด™เตเด™เดณเตเดŸเต† เดฎเตˆเด•เตเดฐเต‹ เดธเตผเดตเต€เดธเตเด•เตพ เดŽเด™เตเด™เดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเด‚ เดŽเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดžเด™เตเด™เตพ เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เตเด‚. เด’เดฐเต เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดคเดฏเตเดฏเดพเดฑเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด‡เดคเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต.

เดกเต‹เด•เตเด•เตผ เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเตเด•เตพ

เด•เตเดฌเต‡เตผเดจเต†เดฑเตเดฑเต เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเตˆเดธเตเดกเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เดณเตเดŸเต† เดตเดฟเดจเตเดฏเดพเดธเด‚, เดธเตเด•เต†เดฏเดฟเดฒเดฟเด‚เด—เต, เดฎเดพเดจเต‡เดœเตเดฎเต†เดจเตเดฑเต เดŽเดจเตเดจเดฟเดต เด“เดŸเตเดŸเต‹เดฎเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดธเด‚เดตเดฟเดงเดพเดจเดฎเดพเดฃเต. เด‡เดคเดฟเดจเต† "เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เด“เตผเด•เตเด•เดธเตเดŸเตเดฐเต‡เดฑเตเดฑเตผ" เดŽเดจเตเดจเตเด‚ เดตเดฟเดณเดฟเด•เตเด•เตเดจเตเดจเต. Kubernetes เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เดณเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เด™เตเด•เดฟเตฝ, เดˆ เดธเดฟเดธเตเดฑเตเดฑเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เดจเดฎเตเดฎเตพ เด†เดฆเตเดฏเด‚ เดˆ เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเตเด•เตพ เดธเตเดตเดจเตเดคเดฎเดพเด•เตเด•เดฃเด‚. เดŽเดจเตเดจเดพเตฝ เด†เดฆเตเดฏเด‚, เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเตเด•เตพ เดŽเดจเตเดคเดพเดฃเต†เดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เดพเด‚. เด…เดคเต เดŽเดจเตเดคเดพเดฃเต†เดจเตเดจ เดšเต‹เดฆเตเดฏเดคเตเดคเดฟเดจเตเดณเตเดณ เดเดฑเตเดฑเดตเตเด‚ เดจเดฒเตเดฒ เด‰เดคเตเดคเดฐเด‚ เด’เดฐเตเดชเด•เตเดทเต‡ เด•เดฃเตเดŸเต†เดคเตเดคเดพเดจเดพเด•เตเด‚ เดชเตเดฐเดฎเดพเดฃเต€เด•เดฐเดฃเด‚ เดกเต‹เด•เตเด•เดฑเดฟเดฒเต‡เด•เตเด•เต:

เด’เดฐเต เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเตผ เด‡เดฎเต‡เดœเต เดŽเดจเตเดจเดคเต เดญเดพเดฐเด‚ เด•เตเดฑเดžเตเดžเดคเตเด‚ เดธเตเดตเดฏเด‚ เด‰เตพเด•เตเด•เตŠเดณเตเดณเตเดจเตเดจเดคเตเดฎเดพเดฏ, เดŽเด•เตโ€Œเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเดฌเดฟเตพ เดชเดพเด•เตเด•เต‡เดœเดพเดฃเต, เด…เดคเดฟเตฝ เด…เดคเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด†เดตเดถเตเดฏเดฎเดพเดฏ เดŽเดฒเตเดฒเดพเด‚ เด‰เตพเดชเตเดชเต†เดŸเตเดจเตเดจเต: เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด•เต‹เดกเต, เดŽเด•เตโ€Œเดธเดฟเด•เตเดฏเต‚เดทเตป เดŽเตปเดตเดฏเต‹เตบเดฎเต†เดจเตเดฑเต, เดธเดฟเดธเตเดฑเตเดฑเด‚ เดŸเต‚เดณเตเด•เดณเตเด‚ เดฒเตˆเดฌเตเดฐเดฑเดฟเด•เดณเตเด‚, เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เดณเตเด‚. เดฒเดฟเดจเด•เตเดธเดฟเดฒเตเด‚ เดตเดฟเตปเดกเต‹เดธเต เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเด•เดณเดฟเดฒเตเด‚ เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเตˆเดธเตเดกเต เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚, เด…เดŸเดฟเดธเตเดฅเดพเดจ เดธเต—เด•เดฐเตเดฏเด™เตเด™เตพ เดชเดฐเดฟเด—เดฃเดฟเด•เตเด•เดพเดคเต† เด…เดต เดŽเดฒเตเดฒเดพเดฏเตเดชเตเดชเต‹เดดเตเด‚ เด’เดฐเต‡เดชเต‹เดฒเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด‚.

เดชเตเดฐเตŠเดกเด•เตเดทเตป เดธเต†เตผเดตเดฑเตเด•เตพ เด‰เตพเดชเตเดชเต†เดŸเต† เดเดคเต เด•เดฎเตเดชเตเดฏเต‚เดŸเตเดŸเดฑเดฟเดฒเตเด‚ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเดพเดฃเต เด‡เดคเดฟเดจเตผเดคเตเดฅเด‚, เด…เดตเดฏเดฟเตฝ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ เดเดคเต เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดฏเดฟเดฒเตเด‚ เด’เดฐเต‡เดชเต‹เดฒเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด‚.

เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เดณเตเดŸเต† เดธเดตเดฟเดถเต‡เดทเดคเด•เตพ เดชเดฐเตเดฏเดตเต‡เด•เตเดทเดฃเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด‚ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดฎเดฑเตเดฑเต เดตเดดเดฟเด•เดณเตเดฎเดพเดฏเดฟ เด…เดตเดฏเต† เดคเดพเดฐเดคเดฎเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด‚, เด’เดฐเต เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เดจเตเด‚ เด’เดฐเต เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เดฑเดฟเดฏเดพเด•เตเดฑเตเดฑเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดจเตฝเด•เตเดจเตเดจเดคเดฟเดจเตเดฑเต† เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃเด‚ เดจเต‹เด•เตเด•เดพเด‚.

โ–เด’เดฐเต เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เตป เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เดฑเดฟเดฏเดพเด•เตเดฑเตเดฑเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเดฑเต† เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เดซเดฏเดฒเตเด•เตพ เดจเตฝเด•เตเดจเตเดจเต

เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เดจเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เดซเดฏเดฒเตเด•เดณเตเดŸเต† เดธเต‡เดตเดจเด‚ เด“เตผเด—เดจเตˆเดธเตเดšเต†เดฏเตเดฏเดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดžเด™เตเด™เตพเด•เตเด•เต เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดฆเต‹เดทเด™เตเด™เตพ เดจเต‡เดฐเดฟเดŸเต‡เดฃเตเดŸเดฟเดตเดฐเตเด‚:

  1. เด“เดฐเต‹ เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เดจเตเด‚ เด’เดฐเต เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏ เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเดฟเด‚เด—เต เดธเดฟเดธเตเดฑเตเดฑเดฎเดพเดฏเดคเดฟเดจเดพเตฝ เดตเดฟเดญเดตเด™เตเด™เดณเตเดŸเต† เด•เดพเดฐเตเดฏเด•เตเดทเดฎเดฎเดฒเตเดฒเดพเดคเตเดค เด‰เดชเดฏเต‹เด—เด‚.
  2. เดชเตเดฒเดพเดฑเตเดฑเตเดซเต‹เด‚ เด†เดถเตเดฐเดฟเดคเดคเตเดตเด‚. เด’เดฐเต เดชเตเดฐเดพเดฆเต‡เดถเดฟเด• เด•เดฎเตเดชเตเดฏเต‚เดŸเตเดŸเดฑเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดต เด’เดฐเต เดชเตเดฐเตŠเดกเด•เตเดทเตป เดธเต†เตผเดตเดฑเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดšเตเดšเต‡เด•เตเด•เดฟเดฒเตเดฒ.
  3. เด’เดฐเต เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เตป เด…เดงเดฟเดทเตโ€Œเด เดฟเดค เดธเตŠเดฒเตเดฏเต‚เดทเดจเตเดฑเต† เดธเตเดฒเต‹, เดฑเดฟเดธเต‹เดดเตโ€Œเดธเต-เด‡เดจเตเดฑเตปเดธเต€เดตเต เดธเตเด•เต†เดฏเดฟเดฒเดฟเด‚เด—เต.

เด•เตเดฌเต†เตผเดจเต†เดฑเตเดฑเดธเต เดŸเตเดฏเต‚เดŸเตเดŸเต‹เดฑเดฟเดฏเตฝ เดญเดพเด—เด‚ 1: เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ, เดฎเตˆเด•เตเดฐเต‹เดธเตผเดตเต€เดธเตเด•เตพ, เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเตเด•เตพ
เด’เดฐเต เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เดจเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เดซเดฏเดฒเตเด•เตพ เดจเตฝเด•เตเดจเตเดจ Nginx เดตเต†เดฌเต เดธเต†เตผเดตเตผ

เดธเดฎเดพเดจเดฎเดพเดฏ เด’เดฐเต เดชเตเดฐเดถเตเดจเด‚ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เดพเตป เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เดจเตเด•เดณเตเดฎเดพเดฏเดฟ เดคเดพเดฐเดคเดฎเตเดฏเดชเตเดชเต†เดŸเตเดคเตเดคเตเดฎเตเดชเต‹เตพ, เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดถเด•เตเดคเดฟเด•เตพ เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เดพเดตเตเดจเตเดจเดคเดพเดฃเต:

  1. เดตเดฟเดญเดตเด™เตเด™เดณเตเดŸเต† เด•เดพเดฐเตเดฏเด•เตเดทเดฎเดฎเดพเดฏ เด‰เดชเดฏเต‹เด—เด‚: เดกเต‹เด•เตเด•เตผ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเดฟเด‚เด—เต เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด•.
  2. เดธเตเดตเดคเดจเตเดคเตเดฐ เดชเตเดฒเดพเดฑเตเดฑเตเดซเต‹เด‚. เด’เดฐเต เดกเต†เดตเดฒเดชเตเดชเตผเด•เตเด•เต เดคเดจเตเดฑเต† เด•เดฎเตเดชเตเดฏเต‚เดŸเตเดŸเดฑเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเดจเตเดจ เด’เดฐเต เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเตผ เดŽเดตเดฟเดŸเต†เดฏเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด‚.
  3. เด‡เดฎเต‡เดœเต เดฒเต†เดฏเดฑเตเด•เดณเตเดŸเต† เด‰เดชเดฏเต‹เด—เดคเตเดคเดฟเดฒเต‚เดŸเต† เดญเดพเดฐเด‚ เด•เตเดฑเดžเตเดž เดตเดฟเดจเตเดฏเดพเดธเด‚.

เด•เตเดฌเต†เตผเดจเต†เดฑเตเดฑเดธเต เดŸเตเดฏเต‚เดŸเตเดŸเต‹เดฑเดฟเดฏเตฝ เดญเดพเด—เด‚ 1: เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ, เดฎเตˆเด•เตเดฐเต‹เดธเตผเดตเต€เดธเตเด•เตพ, เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเตเด•เตพ
เด’เดฐเต เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เดซเดฏเดฒเตเด•เตพ เดจเตฝเด•เตเดจเตเดจ Nginx เดตเต†เดฌเต เดธเต†เตผเดตเตผ

เดžเด™เตเด™เตพ เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เดจเตเด•เดณเต†เดฏเตเด‚ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เดณเต†เดฏเตเด‚ เด•เตเดฑเดšเตเดšเต เดชเต‹เดฏเดฟเดจเตเดฑเตเด•เดณเดฟเตฝ เดฎเดพเดคเตเดฐเดฎเต‡ เดคเดพเดฐเดคเดฎเตเดฏเด‚ เดšเต†เดฏเตเดคเดฟเดŸเตเดŸเตเดณเตเดณเต‚, เดŽเดจเตเดจเดพเตฝ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เดณเตเดŸเต† เดถเด•เตเดคเดฟเดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เด’เดฐเต เด…เดจเตเดญเดตเด‚ เดฒเดญเดฟเด•เตเด•เดพเตป เด‡เดคเต เดฎเดคเดฟเดฏเดพเด•เตเด‚. เด‡เดคเต เดกเต‹เด•เตเด•เตผ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดตเดฟเดถเดฆเดพเด‚เดถเด™เตเด™เตพ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดฃเตเดŸเต†เดคเตเดคเดพเดจเดพเด•เตเด‚.

โ–เด’เดฐเต เดฑเดฟเดฏเดพเด•เตเดฑเตเดฑเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดพเดฏเดฟ เด’เดฐเต เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเตผ เด‡เดฎเต‡เดœเต เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจเต

เด’เดฐเต เดกเต‹เด•เตเด•เตผ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเดฟเดจเตเดฑเต† เด…เดŸเดฟเดธเตเดฅเดพเดจ เดจเดฟเตผเดฎเตเดฎเดพเดฃ เดฌเตเดฒเต‹เด•เตเด•เต เดซเดฏเดฒเดพเดฃเต Dockerfile. เดˆ เดซเดฏเดฒเดฟเดจเตเดฑเต† เดคเตเดŸเด•เตเด•เดคเตเดคเดฟเตฝ, เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเดฟเดจเตเดฑเต† เด…เดŸเดฟเดธเตเดฅเดพเดจ เด‡เดฎเต‡เดœเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เดฑเต†เด•เตเด•เต‹เตผเดกเต เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจเต, เดคเตเดŸเตผเดจเตเดจเต เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเดฑเต† เด†เดตเดถเตเดฏเด™เตเด™เตพ เดจเดฟเดฑเดตเต‡เดฑเตเดฑเตเดจเตเดจ เด’เดฐเต เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เดŽเด™เตเด™เดจเต† เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเต เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจ เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เดณเตเดŸเต† เด’เดฐเต เดถเตเดฐเต‡เดฃเดฟ เด‰เดฃเตเดŸเต.

เดžเด™เตเด™เตพ เดซเดฏเดฒเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เดคเตเดŸเด™เตเด™เตเดจเตเดจเดคเดฟเดจเตเดฎเตเดฎเตเดชเต Dockerfile, Nginx เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต เด…เดชเตโ€Œเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดฑเดฟเดฏเดพเด•เตเดฑเตเดฑเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดซเดฏเดฒเตเด•เตพ เดคเดฏเตเดฏเดพเดฑเดพเด•เตเด•เดพเตป เดžเด™เตเด™เตพ เดŽเดจเตเดคเดพเดฃเต เดšเต†เดฏเตเดคเดคเต†เดจเตเดจเต เด“เตผเด•เตเด•เตเด•:

  1. เด’เดฐเต เดฑเดฟเดฏเดพเด•เตเดฑเตเดฑเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดชเดพเด•เตเด•เต‡เดœเต เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจเต (npm run build).
  2. Nginx เดธเต†เตผเดตเตผ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต.
  3. เดกเดฏเดฑเด•เตเดŸเดฑเดฟ เด‰เดณเตเดณเดŸเด•เตเด•เด™เตเด™เตพ เดชเด•เตผเดคเตเดคเตเดจเตเดจเต build เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดซเต‹เตพเดกเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต sa-frontend เดธเต†เตผเดตเตผ เดซเต‹เตพเดกเดฑเดฟเดฒเต‡เด•เตเด•เต nginx/html.

เด’เดฐเต เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเตผ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเตเด‚ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดฒเต‹เด•เตเด•เตฝ เด•เดฎเตเดชเตเดฏเต‚เดŸเตเดŸเดฑเดฟเตฝ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจ เดฎเตเด•เดณเดฟเดฒเต† เด˜เดŸเตเดŸเด™เตเด™เดณเตเด‚ เดคเดฎเตเดฎเดฟเดฒเตเดณเตเดณ เดธเดฎเดพเดจเตเดคเดฐเด™เตเด™เตพ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดšเตเดตเดŸเต† เด•เดพเดฃเดพเตป เด•เดดเดฟเดฏเตเด‚.

โ–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. เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ, เด‡เดตเดฟเดŸเต†เดฏเตเด‚ เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดพเดฏ เด’เดจเตเดจเตเด‚ เดคเดจเตเดจเต†เดฏเดฟเดฒเตเดฒ. เดชเตเดฐเดธเด•เตเดคเดฎเดพเดฏ เดตเดฟเดตเดฐเด™เตเด™เตพ เด‡เดคเดฟเตฝ เด•เดฃเตเดŸเต†เดคเตเดคเดพเดจเดพเด•เตเด‚ เดŽเดจเตเดจเดคเดพเดฃเต เดตเดธเตเดคเตเดค เดตเดฟเดตเดฐเดฃเด‚ เดšเดฟเดคเตเดฐเด‚.

โ–เดšเดฟเดคเตเดฐเด‚ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดถเต‡เด–เดฐเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เด…เดชเตโ€Œเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต

เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเดฏ เดšเดฟเดคเตเดฐเดตเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต, เด…เดคเต เด‡เดฎเต‡เดœเต เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต เดคเดณเตเดณเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดžเด™เตเด™เตพ เดธเต—เดœเดจเตเดฏ เด•เตเดฒเต—เดกเต เด‡เดฎเต‡เดœเต เดนเต‹เดธเตเดฑเตเดฑเดฟเด‚เด—เต เดชเตเดฒเดพเดฑเตเดฑเตเดซเต‹เด‚ เดกเต‹เด•เตเด•เตผ เดนเดฌเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด‚. เดœเต‹เดฒเดฟเดฏเตเดŸเต† เดˆ เด˜เดŸเตเดŸเดคเตเดคเดฟเตฝ เดจเดฟเด™เตเด™เตพ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต:

  1. เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด• เดกเต‹เด•เตเด•เตผ.
  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.

เดˆ เด˜เดŸเตเดŸเดคเตเดคเดฟเตฝ, เดซเตเดฐเดฃเตเดŸเต-เดŽเตปเดกเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เดตเดฟเดœเดฏเด•เดฐเดฎเดพเดฏเดฟ เดธเดฎเดพเดฐเด‚เดญเดฟเดšเตเดšเดคเดฟเดจเต เดถเต‡เดทเด‚, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฌเตเดฐเต—เดธเดฑเดฟเตฝ เด…เดคเดฟเดจเตเดฑเต† เดชเต‡เดœเต เดคเตเดฑเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚.

โ–The .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.

โ–เดชเตˆเดคเตเดคเตบ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดพเดฏเดฟ เด’เดฐเต เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเตผ เด‡เดฎเต‡เดœเต เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจเต

เดซเดฏเดฒเดฟเดจเตเดฑเต† เด‰เดณเตเดณเดŸเด•เตเด•เด‚ เดจเต‹เด•เตเด•เดฟเดฏเดพเตฝ 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. เด•เต‚เดŸเดพเดคเต†, เดŽเตปเดตเดฏเต‹เตบเดฎเต†เดจเตเดฑเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ เดตเต€เดฃเตเดŸเตเด‚ เด…เดธเตˆเตป เดšเต†เดฏเตโ€Œเดคเต เดœเดพเดต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพเด•เตเด•เดพเดฏเดฟ เดชเตˆเดคเตเดคเตบ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเดจเตเดจ เดชเต‹เตผเดŸเตเดŸเต เดžเด™เตเด™เตพ เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. 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

เด’เดฐเต เดกเต‹เด•เตเด•เตผ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเดฟเดจเตเดฑเต†เดฏเต‹ เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เดจเตเดฑเต†เดฏเต‹ เดเดชเดฟ เดตเดฟเดฒเดพเดธเด‚ เดŽเด™เตเด™เดจเต† เด•เดฃเตเดŸเต†เดคเตเดคเดพเด‚ เดŽเดจเตเดจเดฑเดฟเดฏเดพเตป, เดซเดฏเตฝ เด•เดพเดฃเตเด• เดตเดพเดฏเดฟเด•เตเด•เตเด•.

เดจเดฎเตเด•เตเด•เต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เดพเด‚ sa-frontend:

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

เด‡เดชเตเดชเต‹เตพ เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต† เดตเดฟเดฒเดพเดธเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เดพเตป เดŽเดฒเตเดฒเดพเด‚ เดคเดฏเตเดฏเดพเดฑเดพเดฃเต localhost:80 เด•เต‚เดŸเดพเดคเต† เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดชเดฐเต€เด•เตเดทเดฟเด•เตเด•เตเด•.

เดจเดฟเด™เตเด™เตพ เดชเต‹เตผเดŸเตเดŸเต เดฎเดพเดฑเตเดฑเดฟเดฏเต†เด™เตเด•เดฟเตฝ เดŽเดจเตเดจเดคเต เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเด• sa-webapp, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดจเดฟเด™เตเด™เตพ เด’เดฐเต เดกเต‹เด•เตเด•เตผ เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เตป เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดจเดฟเด™เตเด™เตพ เดซเดฏเตฝ เดŽเดกเดฟเดฑเตเดฑเต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต App.js เด’เดฐเต เดซเต‹เตพเดกเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต sa-frontendเดฐเต€เดคเดฟเดฏเดฟเดฒเตเดณเตเดณ IP เดตเดฟเดฒเดพเดธเดฎเต‹ เดชเต‹เตผเดŸเตเดŸเต เดจเดฎเตเดชเดฑเต‹ เดฎเดพเดฑเตเดฑเตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต† analyzeSentence(), เด•เดพเดฒเดนเดฐเดฃเดชเตเดชเต†เดŸเตเดŸ เดกเดพเดฑเตเดฑเดฏเตเด•เตเด•เต เดชเด•เดฐเด‚ เดจเดฟเดฒเดตเดฟเดฒเต† เดตเดฟเดตเดฐเด™เตเด™เตพ เดฎเดพเดฑเตเดฑเดฟเดธเตเดฅเดพเดชเดฟเด•เตเด•เตเดจเตเดจเต. เด‡เดคเดฟเดจเตเดถเต‡เดทเด‚, เดจเดฟเด™เตเด™เตพ เดšเดฟเดคเตเดฐเด‚ เดตเต€เดฃเตเดŸเตเด‚ เด•เต‚เดŸเตเดŸเดฟเดšเตเดšเต‡เตผเด•เตเด•เตเด•เดฏเตเด‚ เด…เดคเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•เดฏเตเด‚ เดตเต‡เดฃเด‚.

เดžเด™เตเด™เดณเตเดŸเต† เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดกเดฏเด—เตเดฐเด‚ เด‡เดชเตเดชเต‹เตพ เด‡เด™เตเด™เดจเต†เดฏเดพเดฃเต เด•เดพเดฃเดชเตเดชเต†เดŸเตเดจเตเดจเดคเต.

เด•เตเดฌเต†เตผเดจเต†เดฑเตเดฑเดธเต เดŸเตเดฏเต‚เดŸเตเดŸเต‹เดฑเดฟเดฏเตฝ เดญเดพเด—เด‚ 1: เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ, เดฎเตˆเด•เตเดฐเต‹เดธเตผเดตเต€เดธเตเด•เตพ, เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเตเด•เตพ
เดฎเตˆเด•เตเดฐเต‹ เดธเตผเดตเต€เดธเตเด•เตพ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เดณเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต

เดธเด‚เด—เตเดฐเดนเด‚: เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเดพเดฃเต เดžเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดตเต‡เดฃเตเดŸเดคเต?

เดžเด™เตเด™เตพ เดซเดฏเดฒเตเด•เตพ เดชเดฐเดฟเดถเต‹เดงเดฟเดšเตเดšเต Dockerfile, เดšเดฟเดคเตเดฐเด™เตเด™เตพ เดŽเด™เตเด™เดจเต† เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเตเด‚ เด…เดตเดฏเต† เด’เดฐเต เดกเต‹เด•เตเด•เตผ เดถเต‡เด–เดฐเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดคเดณเตเดณเดพเดฎเต†เดจเตเดจเตเด‚ เดธเด‚เดธเดพเดฐเดฟเดšเตเดšเต. เด•เต‚เดŸเดพเดคเต†, เดซเดฏเตฝ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด‡เดฎเต‡เดœเต เด…เดธเด‚เดฌเตเดฒเดฟ เดŽเด™เตเด™เดจเต† เดตเต‡เด—เดคเตเดคเดฟเดฒเดพเด•เตเด•เดพเดฎเต†เดจเตเดจเต เดžเด™เตเด™เตพ เดชเด เดฟเดšเตเดšเต .dockerignore. เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เดžเด™เตเด™เดณเตเดŸเต† เดฎเตˆเด•เตเดฐเต‹เดธเตผเดตเต€เดธเตเด•เตพ เด‡เดชเตเดชเต‹เตพ เดกเต‹เด•เตเด•เตผ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เดณเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต. เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเดพเดฃเต เดžเด™เตเด™เตพเด•เตเด•เต เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เด†เดตเดถเตเดฏเดฎเดพเดฏเดฟ เดตเดฐเตเดจเตเดจเดคเต เดŽเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดคเดฟเด•เดšเตเดšเตเด‚ เดจเตเดฏเดพเดฏเดฎเดพเดฏ เด’เดฐเต เดšเต‹เดฆเตเดฏเด‚ เด‡เดตเดฟเดŸเต† เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‰เดฃเตเดŸเดพเดฏเต‡เด•เตเด•เดพเด‚. เดˆ เดฎเต†เดฑเตเดฑเต€เดฐเดฟเดฏเดฒเดฟเดจเตเดฑเต† เดฐเดฃเตเดŸเดพเด‚ เดญเดพเด—เด‚ เดˆ เดšเต‹เดฆเตเดฏเดคเตเดคเดฟเดจเต เด‰เดคเตเดคเดฐเด‚ เดจเตฝเด•เตเด‚. เด…เดคเดฟเดจเดฟเดŸเดฏเดฟเตฝ, เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดšเต‹เดฆเตเดฏเด‚ เดชเดฐเดฟเด—เดฃเดฟเด•เตเด•เตเด•:
เดŸเต†เด•เตเดธเตเดฑเตเดฑเต เดตเดฟเดถเด•เดฒเดจเดคเตเดคเดฟเดจเดพเดฏเตเดณเตเดณ เดžเด™เตเด™เดณเตเดŸเต† เดตเต†เดฌเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดฒเต‹เด•เดฎเต†เดฎเตเดชเดพเดŸเตเด‚ เดœเดจเดชเตเดฐเดฟเดฏเดฎเดพเดฏเดฟเดคเตเดคเต€เตผเดจเตเดจเตเดตเต†เดจเตเดจเต เดจเดฎเตเด•เตเด•เต เด…เดจเตเดฎเดพเดจเดฟเด•เตเด•เดพเด‚. เด“เดฐเต‹ เดฎเดฟเดจเดฟเดฑเตเดฑเดฟเดฒเตเด‚ เดฆเดถเดฒเด•เตเดทเด•เตเด•เดฃเด•เตเด•เดฟเดจเต เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เด…เดตเดจเดฟเดฒเต‡เด•เตเด•เต เดตเดฐเตเดจเตเดจเต. เด‡เดคเดฟเดจเตผเดคเตเดฅเด‚ เดฎเตˆเด•เตเดฐเต‹เดธเตผเดตเต€เดธเตเด•เตพ เดŽเดจเตเดจเดพเดฃเต sa-webapp ะธ sa-logic เดตเดฒเดฟเดฏ เดฒเต‹เดกเดฟเดจเต เด•เต€เดดเดฟเดฒเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚. เดฎเตˆเด•เตเดฐเต‹เดธเตผเดตเต€เดธเตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เตพ เดŽเด™เตเด™เดจเต† เดธเตเด•เต†เดฏเดฟเตฝ เดšเต†เดฏเตเดฏเดพเด‚?

เด•เตเดฌเต†เตผเดจเต†เดฑเตเดฑเดธเต เดŸเตเดฏเต‚เดŸเตเดŸเต‹เดฑเดฟเดฏเตฝ เดญเดพเด—เด‚ 1: เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ, เดฎเตˆเด•เตเดฐเต‹เดธเตผเดตเต€เดธเตเด•เตพ, เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเตเด•เตพ

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•