ืืืืฃ ืืื ืืืขืจ ืืงืฉื, ืืืจ ืืืฉืืคื ืึท ืืึทื
Kubernetes ืืื ืืืจ ืืขื ืขื ืฆืืคืจืืื ืฆื ืฉืืขืื ืื ืขืจืฉืืขืจ ืืืืกืืืืข ืืื ืขืก. ืึทืืึธื ืืจื!
ืงืืืขืจื ืขืืขืก ืืื ืืจืื ื. ืคืืจืืืืก ืืึธื ืืึทื ืงืก ืืึทืฆืึธืื ืืืจ ืึท ืคึผืืึทืฅ ืคืื ืืขืื ืฆื ืึทืจืืขืื ืืื ืืขื ืืขืื ื, ืืฉืขืช ืืืขืจ ืขืก ืื ืงืขื ืขื ืืขื ืืขื ืืขืื ืึธืืึธืืืข ืืื ืืืืื ืึท ืืืกื ืฉืขื?
ืืืื ืืืจ ืฆืืืืืคื ืึทื ืงืืืขืจื ืขืืขืก ืงืขื ืขื ืืืื ืืขืืขืจื ื ืึทืืื ืืขืฉืืืื ื, ืืื ืคึฟืึธืจืฉืืึธืื ืืืจ ืคึผืจืืืืจื ืขืก ืืื. ื ืึทืืขืื, ืืื ืืึทืกืืขืจื ืืขื ืืึทืืขืจืืึทื, ืืืจ ืงืขื ืขื ืืืืคื ืึท ืึทืคึผืืึทืงืืืฉืึทื ืืืืืจื ืืืืฃ ืืืงืจืึธืกืขืจืืืืกืขืก ืืื ืึท ืงืืืขืจื ืขืืขืก ืงื ืืื. ืืื ืงืขื ืืึทืจืึทื ืืืจื ืืขื, ืืืืึทื ืขืก ืืื ืคึผืื ืงื ืื ืืขืืืข ืืขืืึทืืึทืืึทืืืฉื ืืขื ืืฆื ืืึธ ืึทื ืืื ืืขืจื ืขื ืืื ืืืขืจ ืงืืืืึทื ืฅ ืฆื ืึทืจืืขืื ืืื Kubernetes. ืืืึธืก ืืืื ืืขื ืคืืจืขืจ ืึทื ืืขืจืฉ ืคืื ืื ืืขืจืข? ืืื ืคืึทืงื, ืขืก ืืขื ืขื ืึท ืคึผืืึทืฅ ืคืื ืืืื. ืึทืืื, ืจืืึฟ ืคืื ืื ืืึทืืขืจืืึทืืก ืึธื ืืืืื ืืื ืึท ืืขืจืงืืขืจืื ื ืคืื ืคึผืฉืื ืืืื - ืื ืงืึทื ืกืขืคึผืก ืคืื Kubernetes ืืื ืื ืคึฟืขืึดืงืืืื ืคืื ืื ืงืืืขืงืื ืืึทืคึฟืขื. ืื ืืืืจืื ืคืื ืื ืืึทืืขืจืืึทืืก ืืืขืจื ืขืืขื ืึทื ืืืืขืจ ืืืืขื ืขืจ ืืขื ืขื ืืึทืงืึทื ื ืืื ืึทืคึผืืึทืงืืืฉืึทื ืึทื ืืืืืงืืื ื, ืืืงืจืึธ ืืึทืืื ืื ืืก ืืื ืืึธืงืงืขืจ ืงืึทื ืืืื ืขืจื. ืืืจ ืืืขืื ืืืื ืื ืื ืืขืจืข ืืืขื. ืขืจืฉืืขืจ, ืืืจ ืืืขืื ืจืขืื ืืืขืื ืืื ืฆื ืืืืคื ืึท ืึทืคึผืืึทืงืืืฉืึทื ืืืืืจื ืืืืฃ ืืืงืจืึธ ืกืขืจืืืืกืขืก ืืืืฃ ืึท ืงืึธืืคึผืืืืขืจ. ืืขืจื ืึธื ืืืจ ืืืขืื ืงืืงื ืืื ืื ืื ืงืึทื ืืืื ืขืจ ืืืืืขืจ ืคึฟืึทืจ ืืขืืขืจ ืืืงืจืึธืกืขืจืืืืก. ืืื ื ืึธื ืืขื, ืืืจ ืืืขืื ืืึทืงืขื ืขื ืืื ืืื Kubernetes ืืื ืงืืง ืืื ืืืคึผืืืืื ื ืึท ืึทืคึผืืึทืงืืืฉืึทื ืืืืืจื ืืืืฃ ืืืงืจืึธืกืขืจืืืืกืขืก ืืื ืึท ืงื ืืื ืืขืจืืื ืืืจื Kubernetes.
ืืขืจ ืฆืืืึทื ื, ืืื ืึท ืืจืึทืืืฉืืึทื ืฆืืืึทื ื ืฆื ืงืืืขืจื ืขืืขืก, ืืืขื ืืขืื ืื ืืืคืงืืึทื ืคืื ืคืืจืฉืืื ื ืคืื ืืืึธืก ืืื ืืขืฉืขืขื ืืฉ ืืืึธืก ืืื ื ืืืืืง ืคึฟืึทืจ ืื ืืืจืืฉื ืืืืขื ืืขื ืืฉ ืฆื ืคึฟืึทืจืฉืืืื ืืื ืคึผืฉืื ืึทืืฅ ืึทืจืืขื ืืื ืงืืืขืจื ืขืืขืก. Kubernetes ืืื ืืืืขืจ ืึท ืคึผืฉืื ืืขืื ืึธืืึธืืืข, ืืืื ืื ืืืืก ืืืืื ืฆื ืืขืจื ืขื ืขืก ืืืืกื ืืื ืืื ืืื ืขืก ืืื ืืขื ืืฆื.
ืืืฆื, ืึธื ืืืืึทืืขืจ ืึทืืืฉืึทื, ืืึธืื ืืื ืื ืึธื ืืืืื ืืื ืจืขืื ืืืขืื ืื ืึทืคึผืืึทืงืืืฉืึทื ืืื ืืืึธืก ืืืจ ืืืขืื ืึทืจืืขืื.
ืขืงืกืคึผืขืจืืืขื ืืึทื ืึทืคึผืืึทืงืืืฉืึทื
ืืื ืืืขืจ ืึทืคึผืืึทืงืืืฉืึทื ืืืขื ืืืจืืคืืจื ืืืืื ืืืื ืคึฟืื ืงืฆืืข. ืขืก ื ืขืื ืืืื ืืึทืฅ ืืื ืึทืจืืึทื ืฉืจืืึทื, ื ืึธื ืืืึธืก, ื ืืฆื ืืขืงืกื ืึทื ืึทืืืกืืก ืืืฉืืจืื, ืขืก ืคึผืขืจืคืึธืจืื ืกืขื ืืืืขื ื ืึทื ืึทืืืกืืก ืคืื ืืขื ืืึทืฅ, ืืืงืืืขื ืึทื ืึทืกืขืกืืึทื ื ืคืื ืื ืขืืึธืฆืืึธื ืขื ืฉืืขืืื ื ืคืื ืืขืจ ืืืืจ ืคืื ืืขื ืืึทืฅ ืฆื ืึท ืืืืขืจ ืืืืคืขืฅ.
ืืึธืก ืืื ืืื ืื ืืืืคึผื ืคึฟืขื ืฆืืขืจ ืคืื ืืขื ืึทืคึผืืึทืงืืืฉืึทื ืงืืงื ืืื.
ืืืขื ืึทืคึผืืึทืงืืืฉืึทื ืคึฟืึทืจ ืกืขื ืืืืขื ื ืึทื ืึทืืืกืืก ืคืื ืืขืงืกืื
ืคึฟืื ืึท ืืขืื ืืฉ ืคืื ื ืคืื ืืืื ืื ื, ืื ืึทืคึผืืึทืงืืืฉืึทื ืืืฉืืืื ืคืื ืืจืื ืืืงืจืึธ ืืึทืืื ืื ืืก, ืืขืืขืจ ืคืื ืืืึธืก ืกืึทืืืื ืึท ืกืคึผืขืฆืืคืืฉ ืืึทื ื ืคืื ืคึผืจืึธืืืขืืก:
- SA-Frontend ืืื ืึทื Nginx ืืืขื ืกืขืจืืืขืจ ืืืึธืก ืกืขืจืืืขืก ืกืืึทืืืง ืจืขืึทืงื ืืขืงืขืก.
- SA-WebApp ืืื ืึท ืืืขื ืึทืคึผืืึทืงืืืฉืึทื ืืขืฉืจืืื ืืื Java ืืืึธืก ืคึผืจืึทืกืขืกืึทื ืจืืงืืืขืก ืคึฟืื ืื ืคืจืึธื ืืขื ื.
- SA-Logic ืืื ืึท ืคึผืืืืึธื ืึทืคึผืืึทืงืืืฉืึทื ืึทื ืคึผืขืจืคืึธืจืื ืกืขื ืืืืขื ื ืึทื ืึทืืืกืืก ืืืืฃ ืืขืงืกื.
ืขืก ืืื ืืืืืืืง ืฆื ืืึธื ืึทื ืืืงืจืึธืกืขืจืืืืกืขืก ืืึธื ื ืื ืขืงืกืืกืืืจื ืืื ืืคืืขืืื ืืขืจืืงืืื. ืืื ืื ืกืืจืืืขื ื ืืขื ืืขืืึทื ืง ืคืื "ืฆืขืฉืืืืื ื ืคืื ืจืืกืคึผืึทื ืกืึทืืืืึทืืื", ืึธืืขืจ ืืื ืืขืจ ืืขืืืืงืขืจ ืฆืืื ืืื ืืึทืจืคึฟื ืฆื ืื ืืขืจืึทืงื ืืื ืืขืืขืจ ืื ืืขืจืข.
ืืึทืืข ืคืืึธืื ืืื ืื ืึทืคึผืืึทืงืืืฉืึทื
ืืื ืื ืืืึทืืจืึทืืข ืืืืื, ืืืจ ืงืขื ืขื ืืขื ืื ื ืืืขืจืขื ืกืืึทืืขืก ืคืื ืื ืกืืกืืขื, ืืืืืกืืจืืจื ืื ืืึทืื ืคืืึธืื ืืื ืื ืึทืคึผืืึทืงืืืฉืึทื. ืืื ืก ืงืืง ืืืึท ืืื:
- ืืขืจ ืืืขืืขืจืขืจ ืจืืงืืืขืก ืึท ืืขืงืข ืคืื โโืื ืกืขืจืืืขืจ
index.html
(ืืืึธืก, ืืื ืงืขืจ, ืืึทืื ืืึธืืื ืื ืจืขืึทืงื ืึทืคึผืืึทืงืืืฉืึทื ืคึผืขืงื). - ืืขืจ ืืึทื ืืฆืขืจ ืื ืืขืจืึทืงืฅ ืืื ืื ืึทืคึผืืึทืงืืืฉืึทื, ืืึธืก ืืื ืึท ืจืืฃ ืฆื ืื ืกืคึผืจืื ื-ืืืืืจื ืืืขื ืึทืคึผืืึทืงืืืฉืึทื.
- ืื ืืืขื ืึทืคึผืืึทืงืืืฉืึทื ืคืึธืจืืืขืจืื ืื ืืงืฉื ืฆื ืืืจืืคืืจื ืืขืงืกื ืึทื ืึทืืืกืืก ืฆื ืื ืคึผืืืืึธื ืึทืคึผืืึทืงืืืฉืึทื.
- ืื ืคึผืืืืึธื ืึทืคึผืืึทืงืืืฉืึทื ืคึผืขืจืคืึธืจืื ืกืขื ืืืืขื ื ืึทื ืึทืืืกืืก ืคืื ืืขื ืืขืงืกื ืืื ืงืขืจื ืื ืจืขืืืืืึทื ืืื ืึท ืขื ืืคืขืจ ืฆื ืื ืืงืฉื.
- ืื ืกืคึผืจืื ื ืึทืคึผืืึทืงืืืฉืึทื ืกืขื ืื ืึท ืขื ืืคืขืจ ืฆื ืื ืจืขืึทืงื ืึทืคึผืืึทืงืืืฉืึทื (ืืืึธืก, ืืื ืงืขืจ, ืืืืึทืื ืื ืจืขืืืืืึทื ืคืื ืื ืืขืงืกื ืึทื ืึทืืืกืืก ืฆื ืืขืจ ืืึทื ืืฆืขืจ).
ืื ืงืึธื ืคึฟืึทืจ ืึทืืข ืื ืึทืคึผืืึทืงืืืฉืึทื ื ืงืขื ืขื ืืืื ืืขืคึฟืื ืขื
ืคืืืกื ืืืง ืึท ืืืงืจืึธืกืขืจืืืืก-ืืืืืจื ืึทืคึผืืึทืงืืืฉืึทื ืืืืฃ ืืืื ืืืืข ืืึทืฉืื
ืึผืื ืื ืึทืคึผืืึทืงืืืฉืึทื ืืึธื ืึทืจืืขืื, ืืืจ ืืึทืจืคึฟื ืฆื ืึธื ืืืืื ืึทืืข ืืจืื ืืืงืจืึธ ืืึทืืื ืื ืืก. ืืึธืืืจ ืึธื ืืืืื ืืื ืื ืงืืืืืกื ืคืื ืืื ืึทืืข - ืื ืคืจืึธื ื-ืกืืฃ ืึทืคึผืืึทืงืืืฉืึทื.
โืฉืืขืื ืจืขืึทืงื ืคึฟืึทืจ ืืืืข ืึทื ืืืืืงืืื ื
ืืื ืกืืจ ืฆื ืืืืคื ืึท ืจืขืึทืงื ืึทืคึผืืึทืงืืืฉืึทื, ืืืจ ืืึทืจืคึฟื ืฆื ืื ืกืืึทืืืจื ืื 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
. ืืืจ ืืืขื ืืขื ืื ืจืขืึทืงื ืึทืคึผืืึทืงืืืฉืึทื ืืืึทื.
ืจืขืึทืืืจื ืึทืคึผืืึทืงืืืฉืึทื ืืขืืื ื ืืืจื 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
, ืืืจ ืืึทืจืคึฟื ืฆื ืืืืคื ืึท ืืืขื ืึทืคึผืืึทืงืืืฉืึทื ืืืืืจื ืืืืฃ ืกืคึผืจืื ื.
ืืืจ ืืึทืจืคึฟื ืึท ืกืคึผืจืื ื ืึทืคึผืืึทืงืืืฉืึทื ืืืึธืก ืงืขื ืขื ืึธื ื ืขืืขื ืึท POST ืืขืื
โ ืืึทืฉืืขืืืงื ืึท ืกืคึผืจืื ื ืืืืืจื ืืืขื ืึทืคึผืืึทืงืืืฉืึทื
ืืื ืกืืจ ืฆื ืฆืขืืืืงืืขื ืึท ืกืคึผืจืื ื ืึทืคึผืืึทืงืืืฉืึทื, ืืืจ ืืืขื ืืึทืจืคึฟื JDK8 ืืื Maven ืืื ืจืขืื ืงืึทื ืคืืืืขืจื ืกืืืืืืข ืืืขืจืืึทืืึทืื. ืึทืืึธื ืืืจ ืืึธืื ืึทืืข ืืขื ืืื ืกืืึทืืืจื, ืืืจ ืงืขื ืขื ืคืึธืจืืขืฆื ืืจืืขืื ืืืืฃ ืืื ืืืขืจ ืคึผืจืืืขืงื.
โ ืคึผืึทืงืงืึทืืื ื ืึท ืึทืคึผืืึทืงืืืฉืึทื ืืื ืึท ืกืืื ืืขืงืข
ื ืึทืืืืืืจื, ื ืืฆื ืึท ืืืึธืงืืึทื, ืฆื ืืขืจ ืืขืงืข sa-webapp
ืืื ืึทืจืืึทื ืื ืคืืืืขื ืืข ืืึทืคึฟืขื:
mvn install
ื ืึธื ืคืืืกื ืืืง ืืขื ืืึทืคึฟืขื ืืื ืืขืจ ืืขืงืข sa-webapp
ืึท ืืืขืืืืืึทืืขืจ ืืืขื ืืืื ืืืฉืืคื target
. ืืึธืก ืืื ืืื ืื Java ืึทืคึผืืึทืงืืืฉืึทื ืืืขื ืืืื ืืืื, ืคึผืึทืงืืืืฉื ืืื ืึท ืกืืื ืืขืงืข, ืจืขืคึผืจืืืขื ืืื ืืืจื ืื ืืขืงืข sentiment-analysis-web-0.0.1-SNAPSHOT.jar
.
โ ืคืืืกื ืืืง ืึท Java ืึทืคึผืืึทืงืืืฉืึทื
ืืืื ืฆื ืื ืืขืงืข target
ืืื ืืืืคื ืื ืึทืคึผืืึทืงืืืฉืึทื ืืื ืื ืคืืืืขื ืืข ืืึทืคึฟืขื:
java -jar sentiment-analysis-web-0.0.1-SNAPSHOT.jar
ืึท ืืขืืช ืืืขื ืคึผืึทืกืืจื ืืฉืขืช ืขืงืกืึทืงืืืืื ื ืืขื ืืึทืคึฟืขื. ืฆื ืึธื ืืืืื ืคืืงืกืืจ ืขืก, ืืืจ ืงืขื ืขื ืคืื ืึทื ืืขืจืงืืืึทืื ืื ืืืกื ืขื ืืขืืึทืืืก ืืื ืื ืกืืึทืง ืฉืคึผืืจ ืืึทืื:
Error creating bean with name 'sentimentController': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'sa.logic.api.url' in value "${sa.logic.api.url}"
ืคึฟืึทืจ ืืื ืื, ืื ืืขืจืกื ืืืืืืืง ืืึทื ืืึธ ืืื ืืขืจ ืืขืจืืึธื ืขื ืคืื ืื ืืืคึผืึธืกืืืืืืื ืคืื ืงืืขืจืึทืคืืืื ื ืื ืืืึทืืฉ sa.logic.api.url
. ืืื ืก ืคืื ืึทื ืืขืจืงืืืึทืื ืื ืงืึธื ืืื ืืืึธืก ืืขืจ ืืขืืช ืึทืงืขืจื.
โ Java ืึทืคึผืืึทืงืืืฉืึทื ืงืึธื ืึทื ืึทืืืกืืก
ืืึธ ืืื ืื ืงืึธื ืกื ืืคึผืึทื ืืื ืืขืจ ืืขืืช ืึทืงืขืจื.
@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();
}
}
- ืืื S
entimentController
ืขืก ืืื ืึท ืคืขืืsaLogicApiUrl
. ืืืึทื ืืืขืจื ืืื ืกืคึผืขืกืืคืืขื ืืืจื ืื ืคืึทืจืืึธืsa.logic.api.url
. - ืคึผืึทืก
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
ืืื ืืืขืจ ืกืืกืืขื ืคืขืื ืืืง ืึท ืคึผืืืืึธื ืึทืคึผืืึทืงืืืฉืึทื
ืืืฆื ืึทืืข ืืืจ ืืึธืื ืฆื ืืึธื ืืื ืืืืคื ืื 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
- ืื ืืืืึทืืืืื ื ืึท ืืืืคืขืฅ
Flask
. - ืกืคึผืขืฆืืคืืฆืืจื ืึทื ืึทืืจืขืก ืคึฟืึทืจ ืคึผืขืจืคืึธืจืืื ื POST ืจืืงืืืขืก ืฆื ืขืก.
- ืจืืืจืืืืื ื ืึท ืคืึทืจืืึธื
sentence
ืคืื ืื ืืงืฉื ืืืฃ. - ืื ืืืืึทืืืืืื ื ืึทื ืึทื ืึธื ืืืข ืืึทื ืืฆืขืจืก ืึธืืืืฉืขืงื
TextBlob
ืืื ืืึทืงืืืขื ืื ืืืขืจืpolarity
ืคึฟืึทืจ ืืขืจ ืขืจืฉืืขืจ ืืึทืฅ ืืืงืืืขื ืืื ืื ืืืฃ ืคืื ืื ืืงืฉื (ืืื ืืื ืืืขืจ ืคืึทื, ืืึธืก ืืื ืืขืจ ืืืืื ืืึทืฅ ืืขืฉืืงื ืคึฟืึทืจ ืึทื ืึทืืืกืืก). - ืฆืืจืืงืงืืืขื ืึท ืขื ืืคืขืจ ืืืขืืขื ืก ืืืฃ ืึผืืื ืื ืืขืงืกื ืคืื ืืขื ืืึทืฅ ืืื ืื ืงืึทืืงืืึทืืืืืื ืืจืืื ืคึฟืึทืจ ืืื
polarity
. - ืงืึทืืขืจ ืึท ืคืืึทืกืง ืึทืคึผืืึทืงืืืฉืึทื, ืืืึธืก ืืืขื ืืืื ืืืจืขืืืืื ืืื
0.0.0.0:5000
(ืืืจ ืงืขื ื ืืืื ืึทืงืกืขืก ืขืก ืืื ืึท ืงืึทื ืกืืจืึทืงืฉืึทื ืคืื ืื ืคืึธืจืขืlocalhost:5000
).
ืื ืืืงืจืึธ ืกืขืจืืืืกืขืก ืืืึธืก ืืึทืื ืื ืึทืคึผืืึทืงืืืฉืึทื ืืขื ืขื ืืืฆื ืคืืืกื ืืืง. ืืื ืืขื ืขื ืืื ื ืฆื ืื ืืขืจืึทืงื ืืื ืืขืืขืจ ืื ืืขืจืข. ืืึธืก ืืื ืืื ืื ืึทืคึผืืึทืงืืืฉืึทื ืืืึทืืจืึทืืข ืงืืงื ืืื ืืื ืืขื ืืื ืข ืคืื โโืึทืจืืขื.
ืื ืืืงืจืึธืกืขืจืืืืกืขืก ืืืึธืก ืืึทืื ืื ืึทืคึผืืึทืงืืืฉืึทื ืืขื ืขื ืืขืืจืืื ืืื ืืจืืขืื ืกืืจ
ืืืฆื, ืืืืืขืจ ืืืจ ืคืึธืจืืขืฆื, ืขืคึฟืขื ืขื ืืืื ืจืขืึทืงื ืึทืคึผืืึทืงืืืฉืึทื ืืื ืึท ืืืขืืขืจืขืจ ืืื ืคึผืจืึผืืื ืฆื ืคึผืึทืจืกืืจื ืขืืืขืืข ืืึทืฅ ืืื ืืื. ืืืื ืึทืืฅ ืืื ืืขืืื ืจืืืืืง - ื ืึธื ืืจืื ืืืขื ืื ืงื ืขืคึผื Send
ืืืจ ืืืขื ืืขื ืื ืึทื ืึทืืืกืืก ืจืขืืืืืึทืื ืืื ืืขืจ ืื ืืขืงืกื ืคืขืื.
ืืื ืืขืจ ืืืืึทืืขืจ ืึธืคึผืืืืืื ื, ืืืจ ืืืขืื ืจืขืื ืืืขืื ืืื ืฆื ืืืืคื ืืื ืืืขืจ ืืืงืจืึธ ืืึทืืื ืื ืืก ืืื ืืึธืงืงืขืจ ืงืึทื ืืืื ืขืจื. ืืึธืก ืืื ื ืืืืืง ืืื ืกืืจ ืฆื ืฆืืืจืืืื ืื ืึทืคึผืืึทืงืืืฉืึทื ืฆื ืืืืคื ืืืืฃ ืื Kubernetes ืงื ืืื.
ืืึธืงืงืขืจ ืงืึทื ืืืื ืขืจื
ื ืงืึทื ืืืื ืขืจ ืืืื ืืื ืึท ืืืืืืืืื, ืืื-ืงืึทื ืืืื ื, ืขืงืกืขืงืืืึทืืืข ืคึผืขืงื ืืื ืึท ืึทืคึผืืึทืงืืืฉืึทื, ืืืึธืก ืืืื ืึทืืฅ ื ืืืืืง ืฆื ืืืืคื ืขืก: ืึทืคึผืืึทืงืืืฉืึทื ืงืึธื, ืืืจืืคืืจืื ื ืกืืืืืืข, ืกืืกืืขื ืืืฉืืจืื ืืื ืืืืืจืขืจืื, ืกืขืืืื ืืก. ืงืึทื ืืืื ืขืจืืขื ืืืืื ืงืขื ืขื ืืืื ืืขืืืืื ื ืืื ืืื ืืงืก ืืื ืืืื ืืึธืื ืื ืืืืืจืึทื ืืึทื ืฅ, ืืื ืืื ืืืขืื ืฉืืขื ืืืง ืึทืจืืขื ืื ืืขืืืข ืจืึทืืึทืจืืืึทืก ืคืื ืื ืื ืคืจืึทืกืืจืึทืงืืฉืขืจ.
ืืขื ืืืื ืึทื ืงืึทื ืืืื ืขืจื ืงืขื ืขื ืืืื ืืืืคื ืืืืฃ ืงืืื ืงืึธืืคึผืืืืขืจ, ืึทืจืืึทื ืืขืจืขืื ื ืคึผืจืึธืืืงืฆืืข ืกืขืจืืืขืจืก, ืืื ืื ืึทืคึผืืึทืงืืืฉืึทื ื ืงืึทื ืืืื ื ืืื ืืื ืืืขืื ืึทืจืืขืื ืื ืืขืืืข ืืื ืงืืื ืกืืืืืืข.
ืฆื ืืืกืคืึธืจืฉื ืื ืคึฟืขืึดืงืืืื ืคืื ืงืึทื ืืืื ืขืจื ืืื ืคืึทืจืืืืึทืื ืืื ืืื ืื ืืขืจืข ืืืขืื ืฆื ืืืืคื ืึทืคึผืืึทืงืืืฉืึทื ื, ืืึธืืืจ ืืขื ืึท ืืืืฉืคึผืื ืคืื ืกืขืจืืืื ื ืึท ืจืขืึทืงื ืึทืคึผืืึทืงืืืฉืึทื ืืื ืึท ืืืืจืืืึทื ืืึทืฉืื ืืื ืึท ืงืึทื ืืืื ืขืจ.
โ ืกืขืจืืืื ื ืกืืึทืืืง ืืขืงืขืก ืคืื ืึท ืจืขืึทืงื ืึทืคึผืืึทืงืืืฉืึทื ื ืืฆื ืึท ืืืืจืืืึทื ืืึทืฉืื
ืืจืืื ื ืฆื ืึธืจืืึทื ืืืืจื ืื ืกืขืจืืืืก ืคืื ืกืืึทืืืง ืืขืงืขืก ืืื ืืืืจืืืึทื ืืืฉืื ืขื, ืืืจ ืืืขืื ืืจืขืคื ืื ืคืืืืขื ืืข ืืืกืึทืืืืึทื ืืืืืฉืื:
- ืืึทืืืึธื ืืฉ ื ืืฆื ืคืื ืจืขืกืืจืกื, ืืืืึทื ืืขืืขืจ ืืืืจืืืึทื ืืึทืฉืื ืืื ืึท ืคืื-ืคืืขืืืฉื ืึธืคึผืขืจืืืืื ื ืกืืกืืขื.
- ืคึผืืึทืืคืึธืจืืข ืืขืคึผืขื ืืขื ืกื. ืืืึธืก ืึทืจืืขื ืืืืฃ ืึท ืืืืข ืงืึธืืคึผืืืืขืจ ืงืขื ื ืืฉื ืึทืจืืขืื ืืืืฃ ืึท ืคึผืจืึธืืืงืฆืืข ืกืขืจืืืขืจ.
- ืคึผืึทืืขืืขื ืืื ืืืื-ืืื ืืขื ืกืืืืข ืกืงืืืืื ื ืคืื ืึท ืืืืจืืืึทื ืืึทืฉืื-ืืืืืจื ืืืืืื ื.
Nginx ืืืขื ืกืขืจืืืขืจ ืกืขืจืืืื ื ืกืืึทืืืง ืืขืงืขืก ืคืืืกื ืืืง ืืืืฃ ืึท ืืืืจืืืึทื ืืึทืฉืื
ืืืื ืงืึทื ืืืื ืขืจื ืืขื ืขื ืืขื ืืฆื ืฆื ืกืึธืืืืข ืึท ืขื ืืขื ืคึผืจืึธืืืขื, ืืื ืคืึทืจืืืืึทื ืืื ืืืืจืืืึทื ืืืฉืื ืขื, ืื ืคืืืืขื ืืข ืกืืจืขื ืืงืืก ืงืขื ืขื ืืืื ืืืืขืจืงื:
- ืขืคืขืงืืืื ื ืืฆื ืคืื ืจืขืกืืจืกื: ืืจืืขืื ืืื ืื ืึธืคึผืขืจืืืืื ื ืกืืกืืขื ื ืืฆื ืืึธืงืขืจ.
- ืคึผืืึทืืคืึธืจืืข ืคืจืืึท. ื ืงืึทื ืืืื ืขืจ ืึทื ืึท ืืขืืืขืืึธืคึผืขืจ ืงืขื ืขื ืืืืคื ืืืืฃ ืืืื ืงืึธืืคึผืืืืขืจ ืืืขื ืึทืจืืขืื ืขืจืืขืฅ.
- ืืืืืืืืื ืืืคึผืืืืืึทื ื ืืืจื ืื ื ืืฆื ืคืื ืืืื ืืืึทืขืจืก.
Nginx ืืืขื ืกืขืจืืืขืจ ืกืขืจืืืื ื ืกืืึทืืืง ืืขืงืขืก ืคืืืกื ืืืง ืืื ืึท ืงืึทื ืืืื ืขืจ
ืืืจ ืืึธืื ืืืืื ืงืึทืืคึผืขืจื ืืืืจืืืึทื ืืืฉืื ืขื ืืื ืงืึทื ืืืื ืขืจื ืืืืฃ ืึท ืืืกื ืคืื ืงืื, ืึธืืขืจ ืืคืืื ืืึธืก ืืื ืืขื ืื ืฆื ืืึทืงืืืขื ืึท ืืขืคืื ืคึฟืึทืจ ืื ืกืืจืขื ืืงืืก ืคืื ืงืึทื ืืืื ืขืจื.
โ ืืืืขื ืึท ืงืึทื ืืืื ืขืจ ืืืื ืคึฟืึทืจ ืึท ืจืขืึทืงื ืึทืคึผืืึทืงืืืฉืึทื
ืื ืืจืื ื ืื ืื ืืืึธืง ืคืื ืึท ืืึธืงืงืขืจ ืงืึทื ืืืื ืขืจ ืืื ืื ืืขืงืข Dockerfile
. ืืื ืื ืึธื ืืืื ืคืื ืืขื ืืขืงืข, ืึท ืจืขืงืึธืจื ืืื ืืขืืืื ืคืื ืื ืืึทืืข ืืืื ืคืื ืืขื ืงืึทื ืืืื ืขืจ, ืืขืจื ืึธื ืขืก ืืื ืึท ืกืืงืืืึทื ืก ืคืื ืื ืกืืจืึทืงืฉืึทื ื ืืืึธืก ืื ืืืงืืืฅ ืืื ืฆื ืฉืึทืคึฟื ืึท ืงืึทื ืืืื ืขืจ ืืืึธืก ืืืขื ืืจืขืคื ืื ืืืืขืจืคืขื ืืฉื ืคืื ืึท ืืืืขืจ ืึทืคึผืืึทืงืืืฉืึทื.
ืืืืืขืจ ืืืจ ืึธื ืืืืื ืืจืืขืื ืืื ืื ืืขืงืข Dockerfile
, ืืึธืื ืืื ืื ืืขืืขื ืงืขื ืืืึธืก ืืืจ ืืืื ืฆื ืฆืืืจืืืื ืื ืจืขืึทืงื ืึทืคึผืืึทืงืืืฉืึทื ืืขืงืขืก ืคึฟืึทืจ ืืคึผืืึธืึทืืื ื ืฆื ืื Nginx ืกืขืจืืืขืจ:
- ืืืืขื ืึท ืจืขืึทืงื ืึทืคึผืืึทืงืืืฉืึทื ืคึผืขืงื (
npm run build
). - ืกืืึทืจืืื ื ืื Nginx ืกืขืจืืืขืจ.
- ืงืึทืคึผืืื ื Directory ืืื ืืึทืื
build
ืคึฟืื ืคึผืจืืืขืงื ืืขืงืขsa-frontend
ืฆื ืื ืกืขืจืืืขืจ ืืขืงืขnginx/html
.
ืื ืืขืจ ืืืจ ืงืขื ืขื ืืขื ืื ืคึผืึทืจืึทืืึทืื ืฆืืืืฉื ืงืจืืืืืื ื ืึท ืงืึทื ืืืื ืขืจ ืืื ืื ืืืืื ืกืืขืคึผืก ืืขืืื ืืืืฃ ืืืื ืืืืข ืงืึธืืคึผืืืืขืจ.
โ ืคึผืจืืคึผืขืจืื ื ืื Dockerfile ืคึฟืึทืจ ืื SA-Frontend ืึทืคึผืืึทืงืืืฉืึทื
ืื ืื ืกืืจืึทืงืฉืึทื ื ืืืึธืก ืืืขื ืืืื ืงืึทื ืืืื ื ืืื Dockerfile
ืคึฟืึทืจ ืึทืคึผืืึทืงืืืฉืึทื SA-Frontend
, ืืืฉืืืื ืคืื ืืืืื ืฆืืืื ืืืื. ืืขืจ ืคืึทืงื ืืื ืึทื ืื Nginx ืึทื ืืืืืงืืื ื ืืึทื ืฉืึทืคึฟื ืืื ืฆืืืขืืจืืื ืึท ืืงืขืจืืืง
- ืื ืืงืขืจ ืคืื ืื ืืืื ืืึธื ืืืื ืื Nginx ืืืื.
- ืืขืงืข ืืื ืืึทืื
sa-frontend/build
ืืึทืจืคึฟื ืฆื ืืืื ืงืึทืคึผืื ืฆื ืื ืืืื ืืขืงืขnginx/html
.
ืืืื ืืืจ ืืืื ืคืื ืืขื ืืึทืฉืจืืึทืืื ื ืฆื ืืขืจ ืืขืงืข Dockerfile
, ืืขืืึธืื ืขืก ืืืขื ืงืืงื ืืื ืืึธืก:
FROM nginx
COPY build /usr/share/nginx/html
ืืื ืืืจ ืงืขื ืขื ืืขื, ืึทืืฅ ืืึธ ืืื ืืืืขืจ ืคึผืฉืื, ืืื ืืขืจ ืืื ืืึทืื ืคืื ืืขืจ ืืขืงืข ืืื ืืคืืื ืืึทื ืฅ ืืืื ืขืืืืืง ืืื ืคืึทืจืฉืืืืืง. ืืขืจ ืืขืงืข ืืขืจืฆืืืื ืื ืกืืกืืขื ืฆื ื ืขืืขื ืื ืืืื nginx
ืืื ืึทืืฅ ืืืึธืก ืืื ืฉืืื ืืื ืขืก, ืืื ื ืึธืืืึทืื ืื ืืื ืืึทืื ืคืื ืื ืืืขืืืืืึทืืขืจ build
ืฆื ืืขืจ ืืืขืืืืืึทืืขืจ nginx/html
.
ืืึธ ืืืจ ืงืขื ืืึธืื ืึท ืงืฉืื ืืืขืื ืืื ืืื ืืืืกื ืืื ืคึผืื ืงื ืืืจ ืืึทืจืคึฟื ืฆื ืฆืืืืขื ืขื ืืขืงืขืก ืคึฟืื ืืขืจ ืืขืงืข build
, ืืึธืก ืืฒืกื, ืคึฟืื ืฐืึทื ืขื ืืื ืืขืงืืืขื ืืขืจ ืฐืขื /usr/share/nginx/html
. ืืื ืคืึทืงื, ืขืก ืืื ืืืื ืืึธืจื ืืฉื ืงืึธืืคึผืืืฆืืจื ืืึธ. ืืขืจ ืคืึทืงื ืืื ืึทื ืื ืืึทืืืึทืืืง ืืื ืคึฟืึธืจืืึทืฆืืข ืงืขื ืขื ืืืื ืืขืคึฟืื ืขื ืืื
โ ืืืืขื ืื ืืืื ืืื ืืคึผืืึธืึทืืื ื ืขืก ืฆื ืื ืจืืคึผืึทืืึทืืึธืจื
ืืืืืขืจ ืืืจ ืงืขื ืขื ืึทืจืืขืื ืืื ืื ืคืึทืจืืืง ืืืื, ืืืจ ืืึทืจืคึฟื ืฆื ืฉืืืคึผื ืขืก ืฆื ืื ืืืื ืจืืคึผืึทืืึทืืึธืจื. ืฆื ืืึธื ืืึธืก, ืืืจ ืืืขืื ื ืืฆื ืื ืคืจืื ืืืึธืืงื ืืืื ืืึธืกืืื ื ืคึผืืึทืืคืึธืจืืข Docker Hub. ืืื ืืขื ืืื ืข ืคืื โโืึทืจืืขื ืืืจ ืืึทืจืคึฟื ืฆื ืืึธื ืื ืคืืืืขื ืืข:
- ืื ืกืืึทืืืจื
ืืึธืงืงืขืจ . - ืจืขืืืกืืจืืจื ืืืืฃ ืื Docker Hub ืืืขืืืืืื.
- ืงืืึธืฅ ืืื ืฆื ืืืื ืืฉืืื ืืืจื ืืืืคื ืื ืคืืืืขื ืืข ืืึทืคึฟืขื ืืื ืื ืืืึธืงืืึทื:
docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD"
ืืืฆื ืืืจ ืืึทืจืคึฟื ืฆื ื ืืฆื ืื ืืืึธืงืืึทื ืฆื ืืืื ืฆื ืื ืืืขืืืืืึทืืขืจ sa-frontend
ืืื ืืืืคื ืื ืคืืืืขื ืืข ืืึทืคึฟืขื ืืึธืจื:
docker build -f Dockerfile -t $DOCKER_USER_ID/sentiment-analysis-frontend .
ืื ืืื ืืืืืืขืจ ืืื ืขื ืืืืข ืืืคืขืื $DOCKER_USER_ID
ืืึธื ืืืื ืจืืคึผืืืืกื ืืื ืืืื Docker Hub ื ืืืขื. ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืืขื ืืืื ืคืื ืื ืืึทืคึฟืขื ืงืขื ืงืืงื ืืื ืืึธืก: rinormaloku/sentiment-analysis-frontend
.
ืืื ืืขื ืคืึทื, ืืขื ืืึทืคึฟืขื ืงืขื ืขื ืืืื ืคืึทืจืงืืจืฆื ืืืจื ืจืืืืืืื ื ืคืื ืขืก -f Dockerfile
, ืืื ื ืื ืืขืงืข ืืื ืฉืืื ืืื ืืขืจ ืืขืงืข ืืื ืืืึธืก ืืืจ ืืืจืืคืืจื ืืขื ืืึทืคึฟืขื.
ืืื ืกืืจ ืฆื ืฉืืงื ืื ืคืึทืจืืืง ืืืื ืฆื ืื ืจืืคึผืึทืืึทืืึธืจื, ืืืจ ืืึทืจืคึฟื ืื ืคืืืืขื ืืข ืืึทืคึฟืขื:
docker push $DOCKER_USER_ID/sentiment-analysis-frontend
ื ืึธื ืงืึทืืคึผืืืืื ื ืขืก, ืงืึธื ืืจืึธืืืจื ืื ืจืฉืืื ืคืื ืืืื ืจืืคึผืึทืืึทืืึธืจืื ืืืืฃ Docker Hub ืฆื ืคึฟืึทืจืฉืืืื ืฆื ืื ืืคึผืืึธืึทื ืคืื ืื ืืืื ืฆื ืื ืืืึธืืงื ืกืืึธืจืืืืฉ ืืื ืืขืืืขื ืืขืจืึธืื.
โ ืืืืคื ืึท ืงืึทื ืืืื ืขืจ
ืืืฆื ืืืขืจ ืขืก ืื ืงืขื ืขื ืืจืืคืงืืคืืข ืืื ืืืืคื ืื ืืืื, ืืืงืื ื ืืื $DOCKER_USER_ID/sentiment-analysis-frontend
. ืฆื ืืึธื ืืึธืก, ืืืจ ืืึทืจืคึฟื ืฆื ืืืืคื ืื ืคืืืืขื ืืข ืกืืงืืืึทื ืก ืคืื ืงืึทืืึทื ืื:
docker pull $DOCKER_USER_ID/sentiment-analysis-frontend
docker run -d -p 80:80 $DOCKER_USER_ID/sentiment-analysis-frontend
ืืืฆื ืืขืจ ืงืึทื ืืืื ืขืจ ืืื ืคืืืกื ืืืง, ืืืจ ืงืขื ืขื ืคืึธืจืืขืฆื ืืจืืขืื ืืืจื ืงืจืืืืืื ื ืื ืืขืจืข ืืืืืขืจ ืืืึธืก ืืืจ ืืึทืจืคึฟื. ืืืขืจ ืืืืืขืจ ืืืจ ืคืึธืจืืขืฆื, ืืึธืื ืืื ืื ืคึฟืึทืจืฉืืืื ืืขื ืคึผืืึทื 80:80
, ืืืึธืก ืืื ืืจืืืก ืืื ืื ืืืื ืงืึทืืขืจ ืืึทืคึฟืขื ืืื ืงืขื ืืืกืงืืืขื ืงืึทื ืคืืืืื ื.
- ืขืจืฉืืขืจ ื ืืืขืจ
80
- ืืึธืก ืืื ืืขืจ ืืึทืืขืืึธืก ืคึผืึธืจื ื ืืืขืจ (ืืึธืก ืืื ืื ืืืืข ืงืึธืืคึผืืืืขืจ). - ืฆืืืืืืข ื ืืืขืจ
80
ืืื ืืขืจ ืคึผืึธืจื ืคืื ืืขื ืงืึทื ืืืื ืขืจ ืฆื ืืืึธืก ืื ืืงืฉื ืืึธื ืืืื ืคืึธืจืืืขืจืืื.
ืืึทืืจืึทืืื ืื ืคืืืืขื ืืข ืืขืืขื.
ืคึผืึธืจื ืคืึธืจืืืขืจืืื ื
ืื ืกืืกืืขื ืจืืืขืจืขืงืฅ ืจืืงืืืขืก ืคืื ืื ืคึผืึธืจื <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
. ืืึธืืืื ื ืขืคึผืขืก ืึทื ืืขืจืฉ ืืื ืึท ืืืืกื ืคืื ืฆืืื. ืืืจ ืงืขื ืขื ืคืึทืจืืืืขืจื ืื ืืืืขื ืืืจื ืืขืืื ื Docker ืืืึธืก ืืืืจืขืงืืขืจืื ืฆื ืืืื ืึธืจืืจื. ืขืก ืืื ืืื ืกืืจ ืฆื ืืึธื ืืึธืก ืึทื ืืืจ ืืึทืจืคึฟื ืื ืืขืงืข .dockerignore
. ืืืจ, ืืืื ืืืจ ืืขื ื ืืึทืงืึทื ื ืืื ืืขืจ ืืขืงืข .gitignore
, ืื ืกืืจืืงืืืจ ืคืื ืืขื ืืขืงืข ืืืขื ืืืกืืึธืืข ืืืกืงืืืขื ืืึทืงืึทื ื. ืขืก ืืืกืืขื ืืืจืขืงืืขืจืื ืืืึธืก ืื ืืืื ืืืืขื ืกืืกืืขื ืงืขื ืขื ืืืื ืึธืจืืจื. ืืื ืืื ืืืขืจ ืคืึทื, ืื ืืื ืืึทืื ืคืื ืืขื ืืขืงืข ืงืืงื ืืื ืืึธืก:
node_modules
src
public
ืืขืงืข .dockerignore
ืืืื ืืืื ืืื ืืขืจ ืืขืืืืงืขืจ ืืขืงืข ืืื ืื ืืขืงืข Dockerfile
. ืืืฆื ืื ืื ืื ืืืื ืืืขื ื ืขืืขื ืึท ืขื ืื ืคืื ืกืขืงืื ืืขืก.
ืืึธืืืจ ืืืฆื ืึทืจืืขืื ืืืืฃ ืื ืืืื ืคึฟืึทืจ ืื Java ืึทืคึผืืึทืงืืืฉืึทื.
โ ืืืืขื ืึท ืงืึทื ืืืื ืขืจ ืืืื ืคึฟืึทืจ ืึท Java ืึทืคึผืืึทืงืืืฉืึทื
ืืืจ ืืืืกื ืืืึธืก, ืืืจ ืืึธื ืฉืืื ืืขืืขืจื ื ืึทืืฅ ืืืจ ืืึทืจืคึฟื ืฆื ืืืืกื ืฆื ืฉืึทืคึฟื ืงืึทื ืืืื ืขืจ ืืืืืขืจ. ืืขืจืคึฟืึทืจ ืืืขื ืืขืจ ืึธืคึผืืืืืื ื ืืืื ืืืืขืจ ืงืืจืฅ.
ืขืคืขื ืขื ืื ืืขืงืข Dockerfile
ืืืึธืก ืืื ืืื ืื ืคึผืจืืืขืงื ืืขืงืข sa-webapp
. ืืืื ืืืจ ืืืืขื ืขื ืืขื ืืขืงืกื ืคืื ืืขื ืืขืงืข, ืืืจ ืืืขื ืืขื ืืืืื ืฆืืืื ื ืืึทืข ืงืึทื ืกืืจืึทืงืฉืึทื ื ืืื ืขืก, ืกืืึทืจืืื ื ืืื ืื ืืขืจืืื ืขื ENV
ะธ EXPOSE
:
ENV SA_LOGIC_API_URL http://localhost:5000
โฆ
EXPOSE 8080
ืงืืืืืึธืจื ENV
ืึทืืึทืื ืืืจ ืฆื ืืขืจืงืืขืจื ืื ืืืืืจืึทื ืืขื ืึทื ืืืขืจืืึทืืึทืื ืืื ืืึธืงืงืขืจ ืงืึทื ืืืื ืขืจื. ืืื ืืึทืืื ืืขืจ, ืืื ืืื ืืืขืจ ืคืึทื, ืขืก ืึทืืึทืื ืืืจ ืฆื ืกืคึผืขืฆืืคืืฆืืจื ืึท URL ืฆื ืึทืงืกืขืก ืื ืึทืคึผื ืคืื ืื ืึทืคึผืืึทืงืืืฉืึทื ืืืึธืก ืคึผืขืจืคืึธืจืื ืืขืงืกื ืึทื ืึทืืืกืืก.
ืงืืืืืึธืจื EXPOSE
ืึทืืึทืื ืืืจ ืฆื ืืึธืื Docker ืฆื ืขืคึฟืขื ืขื ืึท ืคึผืึธืจื. ืืืจ ืืืขืื ื ืืฆื ืืขื ืคึผืึธืจื ืืฉืขืช ืคืืืกื ืืืง ืื ืึทืคึผืืึทืงืืืฉืึทื. ืืึธ ืืืจ ืงืขื ืขื ืืึทืืขืจืงื ืึทื ืืื Dockerfile
ืคึฟืึทืจ ืึทืคึผืืึทืงืืืฉืึทื SA-Frontend
ืขืก ืืื ื ืื ืึทืืึท ืืึทืคึฟืขื. ืืึธืก ืืื ืืืืื ืคึฟืึทืจ ืืึทืงืืืืขื ืืืืฉืึทื ืฆืืืขืงื, ืืื ืื ืืขืจืข ืืืขืจืืขืจ, ืื ืงืึทื ืกืืจืึทืงืฉืึทื ืืื ืืืขื ืคึฟืึทืจ ืืขืจ ืืืื ืขืจ ืืืึธืก ืืืขื ืืืืขื ืขื Dockerfile
.
ืืืืืื ื ืื ืืืื ืืื ืคึผืืฉืื ื ืขืก ืฆื ืื ืจืืคึผืึทืืึทืืึธืจื ืงืืงื ืคึผืื ืงื ืื ืืขืืืข ืืื ืืื ืื ืคืจืืขืจืืืงืข ืืืึทืฉืคึผืื. ืืืื ืืืจ ืืขื ื ื ืืฉื ื ืึธื ืืืืขืจ ืืืืขืจ ืืื ืืืื ืึทืืืืึทืืื, ืื ืงืึธืจืึทืกืคึผืึทื ืืื ื ืงืึทืืึทื ืื ืงืขื ืขื ืืืื ืืขืคึฟืื ืขื ืืื ืืขืจ ืืขืงืข README.md
ืืื ืืขืงืข sa-webapp
.
โ ืืืืขื ืึท ืงืึทื ืืืื ืขืจ ืืืื ืคึฟืึทืจ ืึท ืคึผืืืืึธื ืึทืคึผืืึทืงืืืฉืึทื
ืืืื ืืืจ ืงืืง ืืื ืื ืืื ืืึทืื ืคืื ืื ืืขืงืข Dockerfile
ืืื ืืขืงืข sa-logic
, ืืขืืึธืื ืืืจ ืืืขื ื ืืฉื ืืขืคึฟืื ืขื ืขืคึผืขืก ื ืืึท ืคึฟืึทืจ ืืื ืืึธืจื. ืื ืงืึทืืึทื ืื ืคึฟืึทืจ ืื ืื ืื ืืืื ืืื ืฉืืงื ืขืก ืฆื ืื ืจืืคึผืึทืืึทืืึธืจื ืืึธื ืืืื ืืืื ืืึทืงืึทื ื ืฆื ืืืจ, ืึธืืขืจ, ืืื ืืื ืืื ืืืขืจ ืื ืืขืจืข ืึทืคึผืืึทืงืืืฉืึทื ื, ืืื ืงืขื ืขื ืืืื ืืขืคึฟืื ืขื ืืื ืืขืจ ืืขืงืข. README.md
ืืื ืืขืงืข sa-logic
.
โ ืืขืกืืื ื ืงืึทื ืืึทืืึทื ืืืื ืึทืคึผืืึทืงืืืฉืึทื ื
ืงืขื ืขื ืืืจ ืฆืืืจืื ืขืคึผืขืก ืืืึธืก ืืืจ ืืึธื ื ืืฉื ืืขืกืืขื? ืืื ืงืขื ืืืื ื ืืฉื. ืืื ืก ืคึผืจืืืืจื ืืื ืืืขืจ ืงืึทื ืืืื ืขืจื.
- ืืึธืืืจ ืงืึทืืขืจ ืื ืึทืคึผืืึทืงืืืฉืึทื ืงืึทื ืืืื ืขืจ
sa-logic
ืืื ืงืึทื ืคืืืืขืจ ืขืก ืฆื ืืขืจื ืืืืฃ ืื ืคึผืึธืจื5050
:docker run -d -p 5050:5000 $DOCKER_USER_ID/sentiment-analysis-logic
- ืืึธืืืจ ืงืึทืืขืจ ืื ืึทืคึผืืึทืงืืืฉืึทื ืงืึทื ืืืื ืขืจ
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
ืฆื ืืขืจื ืขื ืืื ืฆื ืืขืคึฟืื ืขื ืื IP ืึทืืจืขืก ืคืื ืึท ืืึธืงืงืขืจ ืงืึทื ืืืื ืขืจ ืึธืืขืจ ืืืืจืืืึทื ืืึทืฉืื, ืึธืคึผืฉืืงื ืฆื ืืขืจ ืืขืงืข
ืืึธืืืจ ืงืึทืืขืจ ืื ืึทืคึผืืึทืงืืืฉืึทื ืงืึทื ืืืื ืขืจ sa-frontend
:
docker run -d -p 80:80 $DOCKER_USER_ID/sentiment-analysis-frontend
ืืืฆื ืึทืืฅ ืืื ืืจืืื ืฆื ืืืื ืฆื ืื ืึทืืจืขืก ืืื ืืขื ืืืขืืขืจืขืจ localhost:80
ืืื ืคึผืจืืืืจื ืื ืึทืคึผืืึทืงืืืฉืึทื.
ืืืืข ืืึธื ืึทื ืืืื ืืืจ ืืฉืืื ืืืฉื ืื ืคึผืึธืจื ืคึฟืึทืจ sa-webapp
, ืึธืืขืจ ืืืื ืืืจ ืืืืคื ืึท ืืึธืงืงืขืจ ืืืืจืืืึทื ืืึทืฉืื, ืืืจ ืืึทืจืคึฟื ืฆื ืจืขืืึทืืืจื ืื ืืขืงืข App.js
ืคืื ืึท ืืขืงืข sa-frontend
ืืืจื ืืฉืึทื ืืื ื ืื IP ืึทืืจืขืก ืึธืืขืจ ืคึผืึธืจื ื ืืืขืจ ืืื ืืขื ืืืคึฟื analyzeSentence()
, ืกืึทืืกืืืืืืื ื ืงืจืึทื ื ืืื ืคึฟืึธืจืืึทืฆืืข ืึทื ืฉืืึธื ืคืื ืึทืืืืืืืื ืืึทืื. ื ืึธื ืืขื, ืืืจ ืืึทืจืคึฟื ืฆื ืจืืึทืกืขืืืึทื ืื ืืืื ืืื ื ืืฆื ืขืก.
ืืึธืก ืืื ืืืึธืก ืืื ืืืขืจ ืึทืคึผืืึทืงืืืฉืึทื ืืืึทืืจืึทืืข ืงืืงื ืืื ืืืฆื.
ืืืงืจืึธืกืขืจืืืืกืขืก ืืืืคื ืืื ืงืึทื ืืืื ืขืจื
ืงืืฆืขืจ: ืืืึธืก ืืึธื ืืืจ ืืึทืจืคึฟื ืึท ืงืืืขืจื ืขืืขืก ืงื ืืื?
ืืืจ ืืึธืื ืคึผืื ืงื ืืืืึทืืึทื ื ืื ืืขืงืขืก Dockerfile
, ืืขืจืขืื ืืืขืื ืืื ืฆื ืืืืขื ืืืืืขืจ ืืื ืฉืืืคึผื ืืื ืฆื ืึท ืืึธืงืงืขืจ ืจืืคึผืึทืืึทืืึธืจื. ืืื ืึทืืืฉืึทื, ืืืจ ืืขืืขืจื ื ืืื ืฆื ืคืึทืจืืืืขืจื ืืืื ืคึฟืึทืจืืึทืืืื ื ื ืืฆื ืื ืืขืงืข .dockerignore
. ืืื ืึท ืจืขืืืืืึทื, ืืื ืืืขืจ ืืืงืจืึธ ืืึทืืื ืื ืืก ืืืฆื ืืืืคื ืืื ืืึธืงืงืขืจ ืงืึทื ืืืื ืขืจื. ืืึธ ืืืจ ืงืขื ืืึธืื ืึท ืืึธืจ ืืขืจืขืืืคืืจืืืงื ืงืฉืื ืืืขืื ืืืึธืก ืืืจ ืืึทืจืคึฟื Kubernetes. ืืขืจ ืฆืืืืืืขืจ ืืืื ืคืื ืืขื ืืึทืืขืจืืึทื ืืืขื ืืืื ืืขืืืืืืขื ืฆื ืขื ืืคึฟืขืจื ืื ืงืฉืื. ืืื ืืขืจ ืืขืจืืืืื, ืืึทืืจืึทืืื ืื ืคืืืืขื ืืข ืงืฉืื:
ืืึธืืืจ ืืืขืจื ืขืืขื ืึทื ืืื ืืืขืจ ืืืขื ืึทืคึผืืึทืงืืืฉืึทื ืคึฟืึทืจ ืืขืงืกื ืึทื ืึทืืืกืืก ืืื ืืขืืืืจื ืืืึธืืืึทืื ืคืึธืืงืก. ืืืืืื ืขื ืืขืื ืงืืืขื ืฆื ืืื ืืขืืข ืืื ืื. ืืขื ืืืื ืึทื ืืืงืจืึธืกืขืจืืืืกืขืก sa-webapp
ะธ sa-logic
ืืืขื ืืืื ืืื ืืขืจ ืจืืืืง ืืึทืกืข. ืืื ืฆื ืืืึธื ืงืึทื ืืืื ืขืจื ืืื ืืืงืจืึธ ืืึทืืื ืื ืืก?
ืืงืืจ: www.habr.com