แ แฅแซแแซแฝแ แแฐแจแต แแฅแญ แแแจแ แแ แจ แฅแ แจแแแแชแซแแ แฅแตแ แ แฅแฑ แแตแฅ แ แแตแแแฅ แฐแตแฐแแฝ แแ. แฐแฅแตแญแซแญแฅ แซแตแญแ!
Kubernetes แแแ แแ. แแแแตแ แแ แฃแแฎแฝ แ แแ แ แซแฃแข แแแตแซแต แฅแ แแแแฅ แจแแจแแแ, แแแ แฐแ แญแ แ แดแญแแแ แ แฅแแต แฐแแณแต แแตแฅ แแแฃแ แญ แญแฝแแ?
แฉแ แญแแตแต แ แแฅแแต แแแญ แฅแแฐแแปแ แจแฐแ แซแ แฉ แฅแซแตแ แแแตแจแ แฅแแฒแแญแฉ แฅแแญแญแแณแแแข แญแธแแ แญแ
แแ แแณแแต แ แแแฃ แจแฐแแแแฑ แ แแ แ แฉแ แญแแตแต แญแแตแฐแญ แแตแฅ แฃแ แแญแญแฎ แ แแแแแถแฝ แแญ แจแฐแแ แจแฐ แแฐแแ แชแซแ แแแต แญแฝแแแข แแแ
แแตแตแ แแตแ แต แฅแฝแแแ, แแญแแซแฑแ แฐแแ แแปแฝแ แจแฉแ แญแแตแต แแญ แฅแแดแต แฅแแฐแแ แฉ แแแตแฐแแญ แฅแแ
แจแแ แแแ แต แฐแแณแณแญ แแด แแ. แญแ
แแแชแซ แจแแแฝ แจแแแจแ แแแตแ แแ? แ แฅแแแฑ, แฅแ แแแฎแฝ. แตแแแ
, แ แฅแแแแน แฅแแแ
แแณแแถแฝ แแแ แซแ แแแฎแฝแ แ แแฅแซแซแต แญแแแซแ - แจ Kubernetes แฝแแฐ-แแณแฆแฝ แฅแ แจ kubectl แตแแแ แฃแ
แชแซแต. แจแฅแแแ
แฝแแแฝ แฐแซแฒแแฝ แ แแฃแขแซแธแ แจแแฐแแ แชแซ แแแตแ, แแญแญแฎ แฐแญแชแต แฅแ แจแถแจแญ แฎแแดแญแแฎแฝแ แฅแแฐแแซแแ
แญแแแณแ. แ แแ แแแแต แฅแแแณแแ. แ แแแแชแซแฃ แ แฎแแแฉแฐแญ แแญ แฃแ แแญแญแฎ แฐแญแชแต แแญ แจแฐแแฐแจแฐ แแฐแแ แชแซแ แฅแแดแต แแตแฌแต แฅแแณแแฅแ แฅแแแแแญแข แจแแซแ แแฅแซแแณแแฑ แแญแญแฎ แ แแแแแต แจแฅแ แแซแ แแตแแฝแ แฅแแแแจแณแแ. แฅแ แจแแซ แ แแ แจแฉแ แญแแตแต แแญ แฅแแฐแแแแแ แฅแ แ แฉแ แญแแตแต แ แแฐแณแฐแจแ แญแแตแฐแญ แแตแฅ แ แแญแญแฎ แฐแญแชแต แแญ แ แแแตแจแต แจแแฐแแ แชแซแแ แแแญแแต แฅแแแจแแซแแ แข
แญแ แ แแซแจแฅ แแฐ แฉแ แญแแตแต แแต แ แแต แ แแซแจแฅ แฃ แแแ แแแญ แ แฉแ แญแแตแต แแตแฅ แฅแแดแต แ แแแ แฅแแฐแฐแแแ แแแจแณแต แฐแซ แฐแ แจแแซแตแแแแ แแ แฅแจแแ แซแแแ แฅแแ แแแแค แญแฐแฃแแข แฉแ แญแแตแต แ แฅแญแแฅ แแแ แดแญแแแ แแแฃ แแแ แแซแแ แจแแแแ แจแต แฅแ แฅแแดแต แฅแ แ แแญ แฅแแฐแแแ แฅแตแซแแ แตแจแตแข
แ แแแฃ แฅแ แณแแจแแ แฃ แแฐ แฅแซ แฅแแแฃแ แตแแแแ แซแ แแฐแแ แชแซ แฅแแแแแญแข
แจแแจแซ แแฐแแ แชแซ
แจแฅแ แแฐแแ แชแซ แ แแต แฐแแฃแญ แฅแป แญแฐแซแแข แฅแแฐ แแฅแ แต แ แแต แแจแแฐ แแแญ แญแแตแณแ แฃ แจแแซ แ แแ แฃ แจแฝแแ แตแแณแ แแณแชแซแแฝแ แ แแ แแ แฃ แจแแ แ แแจแแฐ แแแญ แตแแต แตแแฐแ แซแซแแณแ แฃ แจแ แจแแฐ แแแฉแ แฐแซแฒ แแฐแแฐแ แแแญ แซแแแ แตแแณแ แ แแแซแจแต แญแแแแแแข
แจแแ แแฐแแ แชแซ แแ แแตแฎแต แญแ แ แญแแตแแแข

แตแแต แตแแฐแ แจแตแญ แแฐแแ แชแซ
แจแดแญแแซแ แฅแญแณ แ แแแญ แฃ แ แแแฌแฝแ แถแตแต แฅแแ แ แ แแแแแถแฝแ แซแแ แแ แฃ แฅแซแแณแแฑแ แจแฐแแฐแ แฐแแฃแซแตแ แญแแณแ แข
- SA-Frontend React static แแญแแฝแ แจแแซแแแแ แจNginx แตแญ แ แแแแญ แแแข
- SA-WebApp แ แแซ แจแฐแแ แจแแแฃแญ แจแแ แจแ แฅแซแแแฝแ แจแแซแตแฐแแแต แจแตแญ แแฐแแ แชแซ แแแข
- SA-Logic แจแฝแแ แตแแตแ แตแแฐแ แจแแซแจแแแ แจแแญแแ แแฐแแ แชแซ แแแข
แแญแญแฎ แฐแญแชแต แ แฐแแฅแ แ แแแแฉแ แแฅ แแแต แซแตแแแแ. "แจแตแซแแฝ แแแซแจแต" แจแแแแ แแณแฅ แฐแแฃแซแ แซแฐแญแแ, แแ แ แฐแแณแณแญ แแ แฅแญแต แ แญแต แแแฃแฃแต แซแตแแแแธแแ.

แแแฅ แ แแฐแแ แชแซแ แแตแฅ แญแแตแณแ
แจแแญ แฃแแ แฅแแ แแตแฅ แ แแฐแแ แชแซแ แแตแฅ แซแแแ แจแแแฅ แแฐแถแฝ แ แแณแจแต แจแตแญแแฑแ แแฅแญ แซแแธแแ แฐแจแแแฝ แแจแต แญแฝแแ. แฅแแจแแแแธแแก-
- แ แณแน แจแ แแแแฉ แแญแ แญแ แญแแ
index.html(แญแ แ แ แฐแซแ แจReact แแฐแแ แชแซ แฅแ แแ แญแญแแ)แข - แฐแ แแแ แจแแฐแแ แชแซแ แแญ แญแแแแแฃ แญแ แ แแฐแญ แแ แต แแญ แจแฐแแฐแจแฐ แจแตแญ แแฐแแ แชแซ แฅแช แซแฐแญแแแข
- แจแตแจ-แแฝ แ แแแฌแฝแ แฝแแแ แแฐ Python แแฐแแ แชแซ แแแฐแแฐแ แฅแซแแแ แซแตแฐแแแแแข
- แจแแญแแ แ แแแฌแฝแ แจแฝแแแ แตแแต แฐแแตแ แแคแฑแ แแฅแซแแ แแแฝ แญแแแณแแข
- แจแตแแชแแ แ แแแฌแฝแ แแแฝ แแแฐแ แ แแแฝ แญแแซแ (แญแ แ แ แฐแซแ แจแฐแฐแแฐแแแ แฝแแ แแคแต แแฐแ แแแ แซแณแซแ)แข
แจแฅแแแ แแ แแฐแแ แชแซแแฝ แฎแต แแแ แญแฝแแ . แจแแณแฝแ แฅแ แ แตแฐแณแฝ แแจแซแแฝ แตแแ แญแ แ แแจแแป แ แแ แแฐ แซแตแ แฅแแตแตแแแฅแฅ แฅแแญแซแแแข
แ แ แจแฃแข แแฝแ แแญ แ แแญแญแฎ แฐแญแชแต แแญ แจแฐแแฐแจแฐ แแฐแแ แชแซแ แ แแแต แแญ
แ แแแฌแฝแ แฅแแฒแฐแซ แถแตแฑแแ แแญแญแฎ แฐแญแชแต แแแแญ แ แแฅแแข แจแฅแแฑ แ แฃแ แแแ แฅแแแแญ - แจแแต-แแจแจแป แแฐแแ แชแซแข
โแแ แซแฃแข แแแต React แแแแญ
แจแฌแญแต แ แแแฌแฝแ แแแแต แจ Node.js แแฌแ แฅแ NPM แ แฎแแแแฐแญแ แแญ แแซแ แ แแฆแตแข แญแ
แแ แแ แจแซแ แ แแ, แฐแญแแแแ แ แแ แแ แแฐ แจแแฎแแญแต แ แแ แญแแฑ sa-frontend แฅแ แจแแจแฐแแแ แตแแแ แซแแฑ:
npm install แญแ
แแ แตแแแ แ แ แแแ แแตแฅ แ แแตแแธแ node_modules แจ React แแฐแแ แชแซ แฅแแแแฝ แญแซแแ, แแแแฆแน แ แแญแ แแตแฅ แญแแแ package.json. แ แฐแแณแณแญ แ แแ แแตแฅ แซแแตแ แฅแแแฝ แซแแจแฑ แ แแ แจแแจแฐแแแ แตแแแ แซแแฑ:
npm start แญแผแ แแ. React แแฐแแ แชแซ แ แแ แฅแจแฐแซ แแ แฅแ แแฐ แ แณแน แ แตแซแป แ แแฐแต แแแแต แญแปแแแข localhost:3000. แ แฅแฑ แฎแต แแตแฅ แจแแ แแแญ แแแแฅ แญแฝแแแข แ แ แณแน แแตแฅ แจแฅแแแ
แแแฆแฝ แฐแฝแฅแ แแฒแซแแ แซแซแ. แญแ
แแแ แจแปแแ แจแแแแฝ แแตแญ "แแ
" แฐแฅแ แแแ แซแ แแตแแ แแ. แแแ
แ แแตแแ แญแแฃแแ แจแแต แแแต แแแต แแฐ แแแ แฅแ แ แตแฐแณแฝ แฐแแญแฎ แญแแจแซแแข
โ แแแญแต แจ React แแฐแแ แชแซแ แ แแแแแต แแญ
แจReact แแฐแแ แชแซแ แ แตแญแญแ แแแ แแ แแแ แแฐ แจแแญแแแณแแฑ แแญแแฝ แตแฅแตแฅ แแแแฅ แฅแ แจแตแญ แ แแแแญแ แ แแ แแ แแฐแแ แแฝ แแแแแ แ แแฅแแข
React แแฐแแ แชแซแ แแแแแฃแต แฅแแฐแแ แฐแญแแแแ แ แแ แแ แแฐ แ แแแ แญแแฑ sa-frontend แฅแ แจแแจแฐแแแ แตแแแ แซแแฑ:
npm run build แญแ
แ แแฎแแญแต แ แแ แแตแฅ แแแซ แญแแฅแซแ build. React แแฐแแ แชแซ แฅแแฒแฐแซ แจแแซแตแแแแตแ แแแแ แจแแญแแแณแแฑ แแญแแฝ แญแญแแแข
โแตแณแฒแญ แแญแแฝแ แ Nginx แแแแแ
แแแแชแซ แจ Nginx แตแญ แ แแแแญแ แแซแ แฅแ แแแต แซแตแแแแแณแแข แฅแฑแ แแแจแต แฅแ แแแซแ แฅแ แแแตแฌแต แแแชแซแแฝแ แแแแต แญแฝแแแข แจแแซ แจแ แแแแ แญแแต แแ
แณแต แซแตแแแแแณแ sa-frontend/build แแฐ แ แแ [your_nginx_installation_dir]/html.
แ แแ
แ แแซแจแฅ, แจ React แแฐแแ แชแซ แ แแฐแ แฐแฅแ แต แแ แจแฐแแ แจแ แแญแ index.html แแญ แญแแแแข [your_nginx_installation_dir]/html/index.html. แญแ
แ แแฃแช แจ Nginx แ แแแแญ แแฐ แฅแฑ แฒแแฃ แจแแซแแฃแ แแญแ แแแข แ แแแแฉ แแฐแฅ แแญ แแแณแแฅ แฐแแ
แฏแแข 80, แแแญ แแ แแญแแ แ แแจแ แ แแแแแต แแแแต แแ แแต แญแฝแแ [your_nginx_installation_dir]/conf/nginx.conf.
แ แแ แ แณแฝแแ แญแญแแฑ แฅแ แแฐ แญแแฑ localhost:80. React แแฐแแ แชแซ แแนแ แซแซแแข

แ 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แ แตแแชแแ แแญ แจแฐแแ แจแฐ แจแตแญ แแฐแแ แชแซแ แแแต แ แแฅแแข

แจ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();
}
}- แ แคแต
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 แแฐแแ แชแซแฝแ แ แตแซแป แแ แแ แ แแ แตแข
แฅแฑแ แ แแแแญ แSแแชแแ แตแญ แแฐแแ แชแซ แจแฝแแ แแฐแแฐแ แฅแซแแแฝแ แจแต แแแต แฅแแณแแ แต แฅแแแแจแแแแข
แ
แญแแณแฝแแ แฅแแณแแแณแตแฅแฃ แจ Python แแฐแแ แชแซ แ แแญ แฅแแฐแแแ แฅแแแตแแแแข localhost:5000 แฅแ แตแแฅแฑ แแแแญแณแต แญแแญแฉ. แ แแ
แแญแแซแต แจแแฐแญ แ แแแฌแฝแแ แแแแแญ แตแฅแแ แญแ
แแ แญแแตแแแข
java -jar sentiment-analysis-web-0.0.1-SNAPSHOT.jar --sa.logic.api.url=http://localhost:5000 
แตแญแแณแฝแ แจแแญแแ แ แแแฌแฝแ แญแแตแแ
แ แแ แจ Python แแฐแแ แชแซแ แฅแป แแตแฌแต แ แแฅแ แฅแ แตแญแแฑ แฅแแฐแฐแ แ แแ แญแฐแซแแข
โ Python แแฐแแ แชแซแ แ แแแแแต แแญ
แจแแญแแ แ แแแฌแฝแ แแแตแฌแต Python 3 แฅแ Pip แแซแ แ แแฆแต แฅแ แฐแแขแแ แจแ แซแฃแข แฐแแแแฎแฝ แ แตแญแญแ แแแแแต แ แแฅแแตแข
โแฅแแแแฝแ แซแ
แแฐ แจแแฎแแญแต แ แแ แญแแฑ sa-logic/sa แฅแ แจแแจแฐแแตแ แตแแแแฝ แซแแฑ:
python -m pip install -r requirements.txt
python -m textblob.download_corporaโแจแแฐแแ แชแซ แแตแแแญ
แจแฐแซแแต แฅแแแฝ แแญแฃ แแฐแแ แชแซแแ แแแตแฌแต แแแ แแแก-
python sentiment_analysis.pyแญแ แแ แตแแแ แจแแธแแ แ แแ แจแแจแฐแแ แญแแแจแแแก-
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit) แญแ
แแแต แ แแแฌแฝแ แฅแจแฐแซ แฅแ แ แแญ แฅแซแแแฝแ แฅแจแ แ แ แแ แแแต แแแข localhost:5000/
โแจแฎแต แฅแแต
แแฅแซแแแฝ แฅแแดแต แแแฝ แฅแแฐแแฐแฅ แแแจแณแต แจ Python แแฐแแ แชแซ แฎแตแ แฅแแญแก-
from textblob import TextBlob
from flask import Flask, request, jsonify
app = Flask(__name__) #1
@app.route("/analyse/sentiment", methods=['POST']) #2
def analyse_sentiment():
sentence = request.get_json()['sentence'] #3
polarity = TextBlob(sentence).sentences[0].polarity #4
return jsonify( #5
sentence=sentence,
polarity=polarity
)
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000) #6- แจแแแญ แ
แแญ
Flask. - แจPOST แฅแซแแแฝแ แแแ แจแฅ แ แตแซแปแแ แ แแฅแแตแข
- แแฅแจแต แฐแญแตแฎ แแแฃแต
sentenceแจแ แซแแ แ แซแ. - แตแ-แ แแฃ แแแญ แแตแแแญ
TextBlobแฅแ แแ แแแแตpolarityแ แฅแซแแ แ แซแ แแตแฅ แแฐแแ แแ แจแแแแชแซ แแณแฅ (แ แฅแ แแแณ แญแ แแแฐแแฐแ แจแแจแ แ แฅแธแแ แแณแฅ แแ)แข - แแแนแ แ แแแแต แแญ แฃ แจแ แ
แญแฆแฑ แฝแแ แฅแ แแฅแฑ แจแฐแฐแ แ แแแซแฝ แจแซแแ แ แซแ
polarity. - แจแแแตแญ แ แแแฌแฝแแ แ แแตแแแญ แแญแฃ แญแ
แ แ แแญ แญแแแแข
0.0.0.0:5000(แฅแแฒแแ แจแ แนแ แแแฃแณ แ แแ แแ แแฐแญแฑแ แต แญแฝแแlocalhost:5000).
แ แแ แ แแแฌแฝแแ แซแซแฐแฑ แแญแญแฎ แฐแญแชแต แฅแจแฐแฉ แแแข แฅแญแต แ แญแต แฅแแฒแแแ แฐแแแ แฐแแ. แ แแ แจแฅแซ แฐแจแ แแญ แจแแฐแแ แชแซแ แแตแ แแ แฅแแฐแแแตแ แฅแแ.

แ แแแฌแฝแแ แซแซแฐแฑ แแแ แแญแญแฎ แ แแแแแถแฝ แแฐ แคแแ แแแณ แซแแฃแ
แ แแแฃ แจแแแ แแฝแ แ แแตแฃ React แแฐแแ แชแซแ แ แ แณแฝ แแตแฅ แญแญแแฑ แฅแ แจแฐแแฐแ แ แจแแฐ แแแญแ แ แฅแฑ แแญ แแแฐแแฐแ แญแแญแฉแข แแแ แแแญ แ แตแญแญแ แจแฐแฐแซ - แ แแซแฉแ แจแฐแซแ แ แแ Send แจแตแแณแ แแคแฑแ แจแฝแแ แณแฅแ แ แณแฝ แซแซแแข
แ แแแฅแแ แญแแ แแญแญแฎ แ แแแแแถแปแฝแแ แ Docker แฎแแดแญแแฎแฝ แแตแฅ แฅแแดแต แฅแแฐแแฐแซ แฅแแแแแซแแ แข แ Kubernetes แญแแตแฐแญ แแตแฅ แแแแต แแแแจแปแแ แแแแแแต แญแ แ แตแแแ แแ.
แจแถแจแญ แแซแฃแแฝ
แ แฎแแดแญแแญ แจแฐแซแ แ แแแฌแฝแแฝแ แจแแฐแแซแตแฃ แจแแ แ แฅแ แจแแตแฐแณแฐแญ แตแญแแต แแแข แฅแฑแ "แจแฎแแดแญแแญ แฆแญแฌแตแตแซ" แฐแฅแแ แญแ แซแ. Kubernetes แจแแซแฃแแฝ แแญ แจแแ แซ แจแแ, แญแ แ แตแญแแต แจแแ แแแ แ แแต แ แแแแชแซ แฅแแแ แ แแซแฃแแฝ แแแแต แ แแฅแ. แแ แ แแแแชแซ แตแ แแซแฃแแฝ แแ แฅแแฐแแ แฅแแแแแญ แข แแ แฅแแฐแแ แแแแ แฅแซแ แ แฃแ แฅแฉแ แแแต แแแ แญแฝแแ แแฐ แถแจแญแก
แจแฎแแดแญแแญ แแตแ แแแ แญแฅแฐแต แซแแแฃ แซแฑแ แจแปแแฃ แฐแแฃแซแ แจแแ แแฌแ แฒแแ แ แแแฌแฝแแ แแแตแฌแต แจแแซแตแแแแตแ แแแฎแฝ แแ แซแซแตแณแแค แฅแแฑแ แจแแฐแแ แชแซ แฎแตแฃ แจแฉแซ แแ แ แซแฃแขแฃ แจแตแญแแต แแณแชแซแแฝ แฅแ แคแฐ-แแปแแแต แฅแ แ แแฅแฎแฝ แแธแแข แฎแแดแญแแญ แจแฐแฐแจแ แแฎแแซแแฝ แ แ แซแฃแขแแฝ แแตแฅ แฅแ แ แแญ แแแ แญแฝแแแข Linux ะธ Windowsแฅแ แแ แจแฐ แแแฑ แแแ แญแแ แแ แแแแแ แ แฐแแณแณแญ แแแแต แญแฐแซแแข
แญแ แแแต แฎแแดแญแแฎแฝ แจแแแจแป แ แแแแฎแฝแ แจแแฎ แ แแแแแ แฎแแแฉแฐแญ แแญ แแฐแฉ แญแฝแแ, แฅแ แ แแแแแ แ แซแฃแข, แ แแตแฃแธแ แจแฐแซแฐแฑแต แ แแแฌแฝแแฝ แ แฐแแณแณแญ แแแแต แญแฐแซแ.
แจแแซแฃแแฝแ แแ แณแแฝ แแแณแฐแต แฅแ แ แแแฌแฝแแฝแ แแแตแฌแต แจแแแฝ แแแแถแฝ แแญ แแแแแแญแฃ แจแญแนแแ แแฝแ แฅแ แฎแแดแแญ แ แแ แแ แจแฌแญแต แ แแแฌแฝแ แจแแแแแแ แแณแ แฅแแแแจแตแข
โแจแญแฝแแ แแฝแแ แ แแ แแ แจReact แแฐแแ แชแซ แจแแญแแแณแแฑ แแญแแฝแ แแแแแ
แแแฃแ แแฝแแฝแ แ แแ แแ แจแแญแแแณแแฑ แแญแแฝแ แฅแแ แแแฐแซแแต แ แแแจแญ แจแแจแฐแแตแ แแณแถแฝ แซแแฅแแแ แข
- แฅแซแแณแแฑ แจแญแนแแ แแฝแ แจแฐแแ แฆแแฌแฒแแ แฒแตแฐแ แตแแแ แแคแณแ แซแแแ แจแแฅแต แ แ แแแแข
- แจแแตแจแญ แฅแแแแตแข แ แ แแณแแต แจแแแญ แแตแฅ แฎแแแฉแฐแฎแฝ แแญ แจแแฐแซแ แ แแญแต แ แแแแญ แแญ แแญแฐแซ แญแฝแแแข
- แจแจแญแนแแ แแฝแ แแแตแ แแญแแ แฅแ แแฅแ แถแฝ แจแฐแ แแจแจ แแฌแตแข

แ แแแฃแ แแฝแ แแตแฅ แจแแฐแฉ แจแแญแแแณแแฑ แแญแแฝแ แจแแซแแแแ Nginx แตแญ แ แแแแญ
แฎแแดแญแแฎแฝ แฐแแณแณแญ แฝแแญ แแแแณแต แฅแ แ แแญ แจแแแ แจแแ, แจแจแญแนแแ แแฝแแฝ แแญ แฒแแปแธแญ, แจแแจแฐแแต แฅแแซแฌแแฝ แแณแแ แญแฝแแ.
- แจแแฅแต แ แ แแแแก- แถแจแญแ แ แแ แแ แจแตแญแแฐ แญแแแ แแญ แแตแซแตแข
- แจแแตแจแญ แแแแตแข แ แแต แแแข แ แซแฑ แฎแแแฉแฐแญ แจแแฐแซแ แต แฎแแดแญแแญ แจแตแ แญแฐแซแแข
- แจแแตแ แแฅแญแฅแฎแฝแ แ แแ แแ แแแ แญแฅแฐแต แแฐแแซแตแข

แ แฎแแดแญแแญ แแตแฅ แจแแฐแฉ แจแแญแแแณแแฑ แแญแแฝแ แจแแซแแแแ Nginx แตแญ แ แแแแญ
แจแญแนแแ แแฝแแฝแ แฅแ แฎแแดแญแแฎแฝแ แ แฅแแต แแฅแฆแฝ แแญ แฅแป แ แแปแฝแจแแแฃแแแญ แแ แซ แฅแแณแ แแฎแแดแญแแฎแฝ แฅแแซแฌ แตแแต แ แ แแแข แตแ แถแจแญ แฎแแดแญแแฎแฝ แแญแแฎแฝแ แแแแต แญแฝแแแข
โแReact แแฐแแ แชแซ แจแแซแฃ แแตแ แ แแแแฃแต แแญ
แจแถแจแญ แฎแแดแญแแญ แแฐแจแณแ แจแแแฃแณ แแณแแต แแญแ แแ Dockerfile. แ แแ
แแญแ แแแแชแซ แแญ แจแแซแฃแ แแฐแจแณแ แแตแ แญแแแแฃแ, แจแแซแ แจแแแแจแปแแ แแแแถแฝ แจแแซแแ แแซแฃ แฅแแดแต แฅแแฐแแแ แญ แจแแ แแ แฐแจแณแณแญ แแแชแซแแฝ แฐแซแตแฐแแ.
แจแแญแ แแญ แแตแซแต แจแแแแซแฝแ แ แแต Dockerfileแแฐ Nginx แ แแแแญ แแแตแแ แจReact แแฐแแ แชแซ แแญแแฝแ แแแแแแต แซแฐแจแแแแ แซแตแณแแฑแก-
- React แแฐแแ แชแซ แฅแ
แ แแแแฃแต (
npm run build). - แจ Nginx แ แแแแญแ แ แแแแญ แแญแข
- แจแแแซแแ แญแแถแฝ แแ
แณแต
buildแจแแฎแแญแต แ แแsa-frontendแแฐ แจแ แแแแญ แ แแnginx/html.
แจแแ แ แณแฝ แแซแฃแ แ แแแ แญ แฅแ แ แ แซแฃแขแซแ แฎแแแฉแฐแญ แแญ แ แฐแจแแแแต แจแแญ แ แฐแ แแฑแต แฐแจแแแฝ แแซแจแ แซแแแ แฐแแณแณแญแแต แแจแต แญแฝแแ.
โ แSA-Frontent แแฐแแ แชแซ แจแถแญ แแญแ แ แแแแแต แแญ
แแตแฅ แจแแซแฐแฑ แแแชแซแแฝ Dockerfile แแแแแจแป SA-Frontend, แแแต แกแตแแฝแ แฅแป แซแแ แแ. แฅแแแณแ แแ แจ Nginx แแแต แกแตแ แแฐแจแณแ แ แแแ
แทแ แ 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 แจแญแนแแ แแฝแ แแญ แแตแฌแต แญแฝแแแฃ แ แตแซแปแแ แญแ
แ แญแแตแแแข <docker-machine ip>:80. แจแถแจแญ แแแฃแ แแฝแแ แจแ แญแ แ แตแซแป แแแแ
แตแแแแ แแ แแ แญแฝแแแข docker-machine ip.
แ แแ แแแฃ แ แแด แจแแต-แแจแจแป แแฐแแ แชแซ แแซแฃ แ แฐแณแซ แแแณ แจแฐแแแจแฃ แแนแ แ แ แณแฝ แแตแฅ แแญแแต แแปแ แ แแฅแแตแข
โ.dockerignore แแญแ
แจแแฐแแ แชแซแแ แแตแ แแแแฃแต SA-Frontend, แญแ
แแฐแต แฅแ
แ แ แฃแ แแญแแ แแแแ แแแตแฐแแ แฅแแฝแแแ. แญแ
แจแแแ แต แแญแแซแต แจแแตแ แแแฃแณ แ แแต แแฐ แถแจแญ แดแแ แแแญ แ แแ แตแข แจแแแฃแณ แ แแต แจแแแญแแ แแแซ แแตแฅแแ แจแแจแจแป แแจแซแจแชแซ แแ แฐแฐแฅแทแแข docker build. แ แฅแ แแแณ, แ แแ
แตแแแ แแจแจแป แแญ แ แแต แแฅแฅ แ แ. แญแ
แจแแจแฐแแ แแแ
แญ แ แตแฅแฐแฃ แ แแต แแตแฅ แฅแแฒแซแฐแต แซแฐแญแแแก-
sa-frontend:
| .dockerignore
| Dockerfile
| package.json
| README.md
+---build
+---node_modules
+---public
---src แแ แฅแแ
แจแแแแต แแแ แ แแแแฝ แแตแฅ, แ แแ แฅแป แซแตแแแแแ build. แแ แแแแแแ แแแญ แแแจแต แแ แแฃแจแ แแแข แจแตแแนแ แแแซแแฝ แฝแ แฅแแฐแแ แแถแจแญ แ แแแแญ แแแฃแณแแ แแแ แ แญแฝแแแข แญแ
แแ แแแตแจแ, แแญแ แซแตแแแแแ .dockerignore. แฅแญแตแแฃ แแญแแ แจแแณแแแต แจแแ .gitignore, แจแแ
แแญแ แแแ
แญ แแแแฃแต แจแณแแ แญแแตแแ. แจแแตแ แแแฃแณ แตแญแแฑ แฝแ แแแธแ แจแแฝแแตแ แแแซแแฝ แญแแจแแซแแข แ แฅแ แแแณแฃ แจแแ
แแญแ แญแแต แญแ
แ แญแแตแแแก-
node_modules
src
public แแญแ .dockerignore แจแแญแ แแญ แ แฐแแณแณแญ แ แแ แแตแฅ แแแ แ แแ แต Dockerfile. แ แแ แจแแตแ แตแฅแตแฅ แฅแแต แฐแจแแถแฝ แญแแตแณแ.
แ แแ แแแซ แแฐแแ แชแซ แแตแแ แฅแแญแข
โแแแซ แ แแแฌแฝแ แจแแซแฃ แแตแ แแแแฃแต
แแ แฅแแฐแแ แณแแแแ แฃ แฅแ แจแแซแฃ แแตแแฝแ แแแแ แญ แจแแซแตแแแแแตแ แแ แ แตแแตแแ แฐแแจแแแข แแแ แแ แญแ แญแแ แ แฃแ แ แญแญ แญแแแ.
แแญแแ แญแญแแฑ Dockerfile, แญแ
แ แ แแฎแแญแต แ แแ แแตแฅ แญแแแ sa-webapp. แจแแ
แ แแญแ แฝแแ แซแแ แก, แ แฅแฑ แแตแฅ แ แแแ แแแต แจแแแแฉ แแแต แ แณแฒแต แแแฃแณแแฝแ แฅแป แซแแแ ENV ะธ EXPOSE:
ENV SA_LOGIC_API_URL http://localhost:5000
โฆ
EXPOSE 8080 แแแ แแ ENV แ Docker แฎแแดแญแแฎแฝ แแตแฅ แจแ แซแฃแข แฐแแแแฎแฝแ แฅแแฒแซแแ แซแตแฝแแแณแแข แ แฐแแญแ, แ แฅแ แแแณ, แจแฝแแ แตแแณแแ แจแแซแจแแแ แจแแฐแแ แชแซแแ แคแแ แญ แแแตแจแต แฉแ แญแคแ แฅแแฒแซแแแ แญแแ
แตแแแณแ.
แแแ แแ EXPOSE แถแจแญ แแฐแฅ แฅแแฒแจแแต แฅแแฒแแแฉ แซแตแฝแแแณแแข แจแแฐแแ แชแซแ แแญ แตแแฐแซ แญแ
แแ แแฐแฅ แแแ แแ แแแข แฅแแ
แแตแฅ แซแแ แแจแต แญแฝแแ Dockerfile แแแแแจแป SA-Frontend แฅแแฐแแ
แซแ แตแฅแแ แจแแ. แญแ
แแฐแแต แแแแแฝ แฅแป แแ, แ แแ แ แแแแญ, แญแ
แแแฃแณ แแ แแฃแข แแ Dockerfile.
แแตแแ แแแแฃแต แฅแ แแฐ แแ แซแแแซแ แแแแต แแญ แฅแแฐ แแณแแ แแณแ แญแแตแแ. แ แฝแแณแ แแญ แแ แ แฃแ แฅแญแแ แ แซแแแ แฐแแณแ แตแแแแฝ แ แแญแ แแตแฅ แแแ แญแฝแแ README.md แ แ แแ แแตแฅ sa-webapp.
แ Python แแฐแแ แชแซ แจแแซแฃ แแตแ แแแแฃแต
แจแแญแแ แญแแต แจแฐแแแจแฑ 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. แ แฐแจแแชแ แจแแญแแ แ แแแฌแฝแ แจแแซ แ แแแฌแฝแ แจแแแญแก แฅแซแแแฝแ แจแแซแณแแฅแ แตแ แแฐแฅ แแแแแต แ แแฅแ แจแ แซแฃแข แฐแแแแญ แ แแแฐแฅ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, แแญแ Docker VM แฅแซแแฑ แจแแ แแญแแ แแญแตแ แซแตแแแแแณแ App.js แจแ แแ sa-frontendแ แตแแฑ แแตแฅ แจแ แญแ แ แตแซแปแแ แแญแ แจแแฐแฅ แแฅแญแ แ แแแจแญ analyzeSentence()แแ แซแแแ แต แแจแแ แณแญแแ แจแ แแแ แแจแ แ แแฐแซแต. แจแแซ แ แแ แแตแแ แฅแแฐแแ แแฐแฅแฐแฅ แฅแ แแ แแ แซแตแแแแแณแ.
แ แแ แจแ แ แแแฌแฝแ แฅแแแ แแแแซ แญแ แ แญแแตแแแข

แแญแญแฎ แฐแญแชแต แ แแซแฃแแฝ แแตแฅ แญแฐแซแ
แแ แแแซแก แแแ แจแฉแ แญแแตแต แญแแตแฐแญ แซแตแแแแแ?
แ แแ แแญแแนแ แแแแแแแข Dockerfileแแตแแฝแ แฅแแดแต แฅแแฐแแแแก แฅแ แแฐ Docker แแจแแป แฅแแดแต แฅแแฐแแแ แฐแแแฏแแข แ แฐแจแแชแ, แแญแแ แ แแ แแ แแตแแฝแ แฅแแดแต แแแ แ แฅแแฐแแปแ แฐแแจแแ .dockerignore. แ แแ
แแญแแซแต แจแฅแ แแญแญแฎ แฐแญแชแต แ แแ แ แถแจแญ แฎแแดแญแแฎแฝ แแตแฅ แฅแจแฐแฉ แแธแแข แฅแแ
แฉแ แญแแตแต แแแ แฅแแฐแแแแแ แแ แ แแ แตแญแญแแ แฅแซแ แแแญแแต แญแฝแแแข แจแแ
แฅแซแ แแแต แ แแ
แแณแแต แแแฐแ แญแแ แแญ แญแแฐแแ. แฅแตแจแแซแ แตแจแต แจแแจแฐแแแ แฅแซแ แ แตแฅแ แตแก-
แจแ แจแฝแแ แตแแฐแ แแฅ แ แแแฌแฝแ แ แ แแ แ แแ แฐแจแ แณแแ แแแ แฅแแ แฅแแตแฅแข แ แจแฐแแแ แ แแแฎแ แจแแแ แฉ แฅแซแแแฝ แแฐ แฅแฑ แญแแฃแแข แญแ
แแแต แแญแญแฎ แฐแญแชแต แแแต แแ sa-webapp ะธ sa-logic แ แจแแฐแ แญแแแต แแตแฅ แญแแแ. แแญแญแฎ แ แแแแแถแฝแ แจแแซแซแแฑ แแซแฃแแฝแ แฅแแดแต แแแแ แญแปแแ?
แแแญ: hab.com
