ืืืงืฉืชื ื, ืืืจ ืืฆืจ ืจืืืช
ืงืืืจื ื ืืื ื ืฉืืืื ืืืฆืื ืื ืืช ืืคืจืกืื ืืจืืฉืื. ืืืจืฉื!
Kubernetes ืื ืงื. ืืื ืืื ืงืื ืืฉืืืื ืื ืืจืื ืืกืฃ ืืื ืืขืืื ืืชืืื ืืื, ืืขืื ืฉืื ืืื ืืืื ืืฉืืื ืืืื ืืืืืื ืืื ืชืื ืฉืขืืช ืกืคืืจืืช?
ืื ืืชื ืืืื ืกืคืง ืืื ืฉื ืืชื ืืืืื Kubernetes ืื ืื ืืืจ, ืื ื ืืฆืืข ืื ืื ืกืืช ืืืช ืืขืฆืื. ืืืืืจ, ืืืืจ ืฉืืืืช ืืืืืจ ืื, ืชืืื ืืืจืืฅ ืืืฉืื ืืืืืกืก ืขื ืืืงืจื-ืฉืืจืืชืื ืืืฉืืื Kubernetes. ืื ื ืืืื ืืืืืื ืืืช, ืืืืืื ืฉืืืืงื ืืืืชื ืืชืืืืืืืื ืฉืื ื ืขืฉื ืฉืืืืฉ ืืื ืื ื ืืืื ืืช ืืืงืืืืช ืฉืื ื ืืขืืื ืขื Kubernetes. ืื ืืืืื ืืช ืืืืจืื ืืื ืืืืจืื? ืืืขืฉื, ืืฉ ืืจืื ืืืจืื. ืื, ืจืื ืืืืืจืื ืืืื ืืชืืืืื ืืืกืืจ ืฉื ืืืจืื ืคืฉืืืื - ืืืืฉืืื ืฉื Kubernetes ืืืชืืื ืืช ืฉื ืืคืงืืื kubectl. ืืืืจื ืืืืืจืื ืืืื ืื ืืืื ืฉืืงืืจืืื ืฉืืื ืืืืจืื ืืช ืคืืชืื ืืืคืืืงืฆืืืช, ืฉืืจืืชื ืืืงืจื ืืืืืืืช Docker. ื ืื ืืืจื ืืืจืช. ืจืืฉืืช, ื ืืืจ ืขื ืืื ืืืคืขืื ืืคืืืงืฆืื ืืืืืกืกืช ืขื ืืืงืจื-ืฉืืจืืชืื ืืืืฉื. ืืืืจ ืืื ื ืกืชืื ืขื ืื ืืืช ืชืืื ืืช ืืืื ืขืืืจ ืื ืฉืืจืืช ืืืงืจื. ืืืืจื ืื, ื ืืืจ ืืช Kubernetes ืื ืืื ืคืจืืกืช ืืคืืืงืฆืื ืืืืืกืกืช ืขื microservices ืืืฉืืื ืืื ืืื ืขื ืืื Kubernetes.
ืืืฉื ืื, ืขื ืืืฉื ืืืจืืชืืช ื-Kubernetes, ืชืืชื ืืช ืขืืืง ืืืื ื ืฉื ืืืชืจืืฉ ืื ืืืฅ ืืืื ืืืืืฆืข ืขื ืื ืช ืืืืื ืืื ืคืฉืื ืืื ืขืืื ื-Kubernetes. Kubernetes ืืื ืืืืื ืืื ืืืืืื ืคืฉืืื, ืืชื ืื ืฉืื ืฉืจืืฆื ืืืืื ืืืชื ืืืืข ืืืื ืืืืฆื ืืฉืชืืฉืื ืื.
ืืขืช, ืืื ืขืืืืืื ื ืืกืคืื, ืืืื ื ืชืืื ืื ืืืจ ืขื ืืืคืืืงืฆืื ืฉืืืชื ื ืขืืื.
ืืืฉืื ื ืืกืืื ื
ืืืคืืืงืฆืื ืฉืื ื ืชืืฆืข ืจืง ืคืื ืงืฆืื ืืืช. ืื ืืืงื ืืฉืคื ืืื ืืงืื, ืืืืืจ ืืื, ืืืืฆืขืืช ืืื ื ืืชืื ืืงืกื, ืืื ืืืฆืข ื ืืชืื ืกื ืืืื ื ืฉื ืืืฉืคื ืืื, ืืฉืื ืืขืจืื ืฉื ืืืืก ืืจืืฉื ืฉื ืืืชื ืืืฉืคื ืืืืืืืงื ืืกืืื.
ืื ื ืจืื ืืืืื ืืจืืฉื ืฉื ืืืฉืื ืื.
ืืคืืืงืฆืืืช ืืื ืืจื ื ืื ืืชืื ืกื ืืืื ืืื ืฉื ืืงืกืืื
ืื ืงืืืช ืืื ืืื ืืช, ืืืคืืืงืฆืื ืืืจืืืช ืืฉืืืฉื ืืืงืจื-ืฉืืจืืชืื, ืฉืื ืืื ืืื ืคืืชืจ ืืขืจื ืืกืืื ืฉื ืืฉืืืืช:
- SA-Frontend ืืื ืฉืจืช ืืื ืืจื ื ืฉื Nginx ืืืฉืจืช ืงืืฆื React ืกืืืืื.
- SA-WebApp ืืื ืืืฉืื ืืื ืืจื ื ืฉื ืืชื ื-Java ืืืขืื ืืงืฉืืช ืืืืืืช.
- SA-Logic ืืื ืืืฉืื Python ืืืืฆืข ื ืืชืื ืกื ืืืื ืืื ืขื ืืงืกื.
ืืฉืื ืืฆืืื ืฉืฉืืจืืชื ืืืงืจื ืืื ื ืงืืืืื ืื ืคืจื. ืื ืืืืฉืืื ืืช ืืจืขืืื ืฉื "ืืคืจืืช ืืืจืืืช", ืืื ืืืืชื ืืื ืื ืฆืจืืืื ืืงืืื ืืื ืืจืืงืฆืื ืื ืขื ืื.
ืืจืืืช ื ืชืื ืื ืืืคืืืงืฆืื
ืืชืจืฉืื ืืืขืื, ื ืืชื ืืจืืืช ืืช ืืฉืืืื ืืืืืกืคืจืื ืฉื ืืืขืจืืช, ืืืืืืฉืื ืืช ืืจืืืืช ืื ืชืื ืื ืืืคืืืงืฆืื. ืืืื ื ืกืชืื ืขืืืื:
- ืืืคืืคื ืืืงืฉ ืงืืืฅ ืืืฉืจืช
index.html
(ืืฉืจ, ืืชืืจื, ืืืจืื ืืช ืืืืืช ืืืคืืืงืฆืื React). - ืืืฉืชืืฉ ืืงืืื ืืื ืืจืืงืฆืื ืขื ืืืคืืืงืฆืื, ืื ืืืจื ืืงืจืืื ืืืคืืืงืฆืืืช ืืืื ืืจื ื ืืืืกืกืช Spring.
- ืืคืืืงืฆืืืช ืืืื ืืจื ื ืืขืืืจื ืืช ืืืงืฉื ืืืืฆืืข ื ืืชืื ืืงืกื ืืืคืืืงืฆืืืช Python.
- ืืคืืืงืฆืืืช Python ืืืฆืขืช ื ืืชืื ืกื ืืืื ื ืฉื ืืืงืกื ืืืืืืจื ืืช ืืชืืฆืื ืืชืืืื ืืืงืฉื.
- ืืคืืืงืฆืืืช Spring ืฉืืืืช ืชืืืื ืืืคืืืงืฆืืืช React (ืืฉืจ, ืืชืืจื, ืืฆืืื ืืช ืืชืืฆืื ืฉื ื ืืชืื ืืืงืกื ืืืฉืชืืฉ).
ื ืืชื ืืืฆืื ืืช ืืงืื ืขืืืจ ืื ืืืืฉืืืื ืืืื
ืืคืขืืช ืืืฉืื ืืืืกืก ืืืงืจื-ืฉืืจืืชืื ืืืืฉื ืืืงืืื ืฉืื
ืืื ืฉืืืคืืืงืฆืื ืชืขืืื, ืขืืื ื ืืืคืขืื ืืช ืื ืฉืืืฉืช ืฉืืจืืชื ืืืืงืจื. ื ืชืืื ืขื ืืืืื ืืืืื - ืืืคืืืงืฆืื ืืงืืืืช.
โืืืืจ ืืช React ืืคืืชืื ืืงืืื
ืขื ืื ืช ืืืคืขืื ืืคืืืงืฆืืืช 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.
ืืคืืืงืฆืืืช 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. ืืื ืื ืืื ืื ืืืชืืืช ืื ืงืืืืช ืคื ืืื ืืืฆืคื ืืืงืฉืืช ืืกืื ืื.
2.ืืืฃ ืืืงืฉื ืฉื ืฉืื ืืืงืฉื. ืืืื ืืืฃ ืืงืฉื ืืืืืื:
{
sentence: "I like yogobella!"
}
3.ืืืฉืจ ืืชืงืืืช ืชืืืื ืืืงืฉื, ืืฆื ืืจืืื ืืชืขืืื. ืื ืืืจื ืืขืืืื ืืืืฉ ืฉื ืืจืืื. ืื ื ืงืื ื ืชืื ืื (ืืืืืจ, ืืืืืืงื JSON ืืืืื ืืช ื ืชืื ื ืืงืื ืืืช ืฆืืื ืืืงืกื ืืืืืฉื), ื ืืฆืื ืืช ืืจืืื Polarity
, ืฉืื ืืชืงืืืื ืืชื ืืื ืืืชืืืืื. ืื ืื ื ืืชืืจืื ืืช ืืจืืื:
const polarityComponent = this.state.polarity !== undefined ?
<Polarity sentence={this.state.sentence}
polarity={this.state.polarity}/> :
null;
ื ืจืื ืฉืืงืื ืขืืื ืื ืืื. ืื ืจืข ืืื ืืืื? ืื ืืชื ืื ืื ืฉืืืชืืืช ืฉืืืื ืืืคืืืงืฆืื ืื ืกื ืืฉืืื ืืงืฉืช POST, ืืื ืขืืืื ืฉืื ืืืจ ืฉืืืื ืืงืื ืืืขืื ืืช ืืืงืฉื ืืื, ืื ืืชื ืืืืื ืฆืืืง. ืืืืืจ, ืืืคื ืืืงืฉืืช ืฉืืชืงืืื ื http://localhost:8080/sentiment
, ืขืืื ื ืืืคืขืื ืืืฉืื ืืื ืืจื ื ืืืืืกืก ืขื Spring.
ืื ืื ื ืฆืจืืืื ืืืฉืื ืืืื ืฉืืืื ืืงืื ืืงืฉืช POST
โืืืืจืช ืืคืืืงืฆืืืช ืืื ืืจื ื ืืืืกืกืช Spring
ืขื ืื ืช ืืคืจืืก ืืคืืืงืฆืืืช Spring, ืชืืืงืง ื-JDK8 ืื-Maven ืืืฉืชื ื ืกืืืื ืืืืืจืื ืืืืื. ืืืืจ ืฉืชืชืงืื ืืช ืื ืื, ืชืืื ืืืืฉืื ืืขืืื ืขื ืืคืจืืืงื ืฉืื ื.
โืืจืืื ืฉื ืืืฉืื ืืงืืืฅ jar
ื ืืื, ืืืืฆืขืืช ืืกืืฃ, ืืชืืงืื sa-webapp
ืืืื ืืช ืืคืงืืื ืืืื:
mvn install
ืืืืจ ืืคืขืืช ืคืงืืื ืื ืืชืืงืืื sa-webapp
ืชืืืืฆืจ ืกืคืจืืื target
. ืืื ืชืืืงื ืืคืืืงืฆืืืช Java, ืืจืืื ืืงืืืฅ jar, ืืืืืฆื ืขื ืืื ืืงืืืฅ 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 ืฉืื ื.
ืขื ืืื ืงืืืขืช ืืชืฆืืจื, ืื ื ืืืืจืื ืืืืฉืื ืืืื ืืจื ื ืฉื Spring ืืื ืืื ืฆืจืื ืืืืืข ืืื ืืืฆืข ืืงืฉืืช ืื ืืชืื ืืงืกื.
ืืื ืื ืืกืื ืืช ืืืื ื, ื ืืืื ืฉืืืคืืืงืฆืื ืฉื Python ืชืืื ืืืื ื ื localhost:5000
ืืืืื ื ื ืกื ืื ืืฉืืื ืืช ืื. ืืชืืฆืื ืืื, ืืคืงืืื ืืืคืขืืช ืืคืืืงืฆืืืช Spring ืชืืจืื ืื:
java -jar sentiment-analysis-web-0.0.1-SNAPSHOT.jar --sa.logic.api.url=http://localhost:5000
ืืืขืจืืช ืฉืื ื ืืกืจื ืืคืืืงืฆืืืช Python
ืืขืช ืื ืฉืขืืื ื ืืขืฉืืช ืืื ืืืคืขืื ืืช ืืคืืืงืฆืืืช Python ืืืืขืจืืช ืชืขืืื ืืืฆืืคื.
โืืืืจืช ืืืฉืื 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
. - ืืคืขื ืืคืืืงืฆืืืช Flask, ืฉืชืืื ืืืื ื ื
0.0.0.0:5000
(ืืชื ืืืื ืื ืืืฉืช ืืืื ืืืืฆืขืืช ืื ืืื ืฉื ืืืืคืกlocalhost:5000
).
ืืืืงืจื-ืฉืืจืืชืื ืืืจืืืืื ืืช ืืืคืืืงืฆืื ืคืืขืืื ืืขืช. ืื ืืืืื ืื ืืืื ืืจืืงืฆืื ืื ืขื ืื. ืื ื ืจืื ืืืืืจืืช ืืืืฉืื ืืฉืื ืื ืฉื ืืขืืืื.
ืื ืฉืืจืืชื ืืืืงืจื ืืืจืืืืื ืืช ืืืคืืืงืฆืื ืืืื ืกืื ืืืฆื ืชืงืื
ืืขืช, ืืคื ื ืฉืชืืฉืื, ืคืชื ืืช ืืคืืืงืฆืืืช React ืฉืื ืืืคืืคื ืื ืกื ืื ืชื ืืืชื ืืฉืคื ืืืฉืื. ืื ืืื ื ืขืฉื ื ืืื - ืืืืจ ืืืืฆื ืขื ืืืคืชืืจ Send
ืชืจืื ืืช ืชืืฆืืืช ืื ืืชืื ืืชืืช ืืฉืื ืืืงืกื.
ืืกืขืืฃ ืืื, ื ืืืจ ืขื ืืื ืืืคืขืื ืืช ืฉืืจืืชื ืืืืงืจื ืฉืื ื ืืงืื ืืืื ืจืื ืฉื Docker. ืื ืืืจืื ืขื ืื ืช ืืืืื ืืช ืืืคืืืงืฆืื ืืืคืขืื ืืืฉืืื Kubernetes.
ืืืืืืช ืืืงืจ
ืชืืื ืช ืงืื ืืืื ืจ ืืื ืืืืืช ืืคืขืื ืงืืช ืืฉืงื, ืขืฆืืืืช ืืืืืื ืืคืืืงืฆืื, ืืืืืืช ืืช ืื ืืืจืืฉ ืืืคืขืืชื: ืงืื ืืคืืืงืฆืื, ืกืืืืช ืืืฆืืข, ืืื ืืขืจืืช ืืกืคืจืืืช, ืืืืจืืช. ื ืืชื ืืืฉืชืืฉ ืืชืืื ืืช ืืืืืืช ืืกืืืืืช ืืื ืืงืก ื-Windows, ืืื ืชืืื ืืคืขืื ืืืชื ืืืืจ ืืื ืงืฉืจ ืืชืฉืชืืช.
ืืืฉืืขืืช ืืื ืฉื ืืชื ืืืคืขืื ืงืื ืืืื ืจืื ืืื ืืืฉื, ืืืื ืฉืจืชื ืืืฆืืจ, ืืืืคืืืงืฆืืืช ืืืืืืื ืืื ืืขืืื ืืืชื ืืืืจ ืืื ืกืืืื.
ืืื ืืืงืืจ ืืช ืืชืืื ืืช ืฉื ืงืื ืืืื ืจืื ืืืืฉืืืช ืืืชื ืขื ืืจืืื ืืืจืืช ืืืคืขืืช ืืืฉืืืื, ืืื ื ืกืชืื ืขื ืืืืื ืฉื ืืืฉืช ืืคืืืงืฆืืืช React ืืืืฆืขืืช ืืืื ื ืืืจืืืืืืช ืืืืื.
โืืืฉืช ืงืืฆืื ืกืืืืื ืฉื ืืืฉืื React ืืืืฆืขืืช ืืืื ื ืืืจืืืืืืช
ืื ืืกืืื ืืืจืื ืืช ืืฉืืจืืช ืฉื ืงืืฆืื ืกืืืืื ืืืืฆืขืืช ืืืื ืืช ืืืจืืืืืืืช, ื ืืชืงื ืืืกืจืื ืืช ืืืืื:
- ืฉืืืืฉ ืื ืืขืื ืืืฉืืืื, ืฉืื ืื ืืืื ื ืืืจืืืืืืช ืืื ืืขืจืืช ืืคืขืื ืืืื.
- ืชืืืช ืืคืืืคืืจืื. ืื ืฉืขืืื ืขื ืืืฉื ืืงืืื ืขืฉืื ืฉืื ืืขืืื ืขื ืฉืจืช ืืืฆืืจ.
- ืงื ื ืืืื ืืืื ืืขืชืืจ ืืฉืืืื ืฉื ืคืชืจืื ืืืืกืก ืืืื ื ืืืจืืืืืืช.
ืฉืจืช ืืื ืืจื ื Nginx ืืืฉืจืช ืงืืฆืื ืกืืืืื ืืคืืขืืื ืขื ืืืื ื ืืืจืืืืืืช
ืื ืืฉืชืืฉืื ืืงืื ืืืื ืจืื ืืื ืืคืชืืจ ืืขืื ืืืื, ืื ืืืฉืืืื ืืืืื ืืช ืืืจืืืืืืืช, ื ืืชื ืืฆืืื ืืช ืืืชืจืื ืืช ืืืืื:
- ืฉืืืืฉ ืืขืื ืืืฉืืืื: ืขืืืื ืขื ืืขืจืืช ืืืคืขืื ืืืืฆืขืืช Docker.
- ืขืฆืืืืช ืืคืืืคืืจืื. ืงืื ืืืื ืจ ืฉืืคืชื ืืืื ืืืจืืฅ ืขื ืืืืฉื ืฉืื ืืขืืื ืืื ืืงืื.
- ืคืจืืกื ืงืื ืืืืฆืขืืช ืฉืืืืฉ ืืฉืืืืช ืชืืื ื.
ืฉืจืช ืืื ืืจื ื Nginx ืืืฉืจืช ืงืืฆืื ืกืืืืื ืืคืืขืืื ืืงืื ืืืื ืจ
ืืฉืืืื ื ืืืื ืืช ืืืจืืืืืืืช ืืืืืืืช ืจืง ืืืื ื ืงืืืืช, ืืื ืื ืื ืืกืคืืง ืืื ืืงืื ืชืืืฉื ืฉื ืืืืงืืช ืืงืื ืืืื ืจืื.
โืื ืืืช ืชืืื ืช ืืืื ืขืืืจ ืืคืืืงืฆืืืช React
ืืื ืืื ืืื ืืืกืืกืืช ืฉื ืงืื ืืืื ืจ Docker ืืื ืืงืืืฅ Dockerfile
. ืืชืืืืช ืงืืืฅ ืื ืืชืืฆืขืช ืจืืฉืื ืฉื ืชืืื ืช ืืืกืืก ืฉื ืืงืื ืืืื ืจ, ืืืืจ ืืื ืืฉ ืจืฆืฃ ืืืจืืืช ืืืฆืืื ืืืฆื ืืืฆืืจ ืงืื ืืืื ืจ ืฉืืขื ื ืขื ืืฆืจืืื ืฉื ืืคืืืงืฆืื ืืกืืืืช.
ืืคื ื ืฉื ืชืืื ืืขืืื ืขื ืืงืืืฅ Dockerfile
, ืืืื ื ืืืืจ ืื ืขืฉืื ื ืืื ืืืืื ืืช ืงืืฆื ืืืฉืื React ืืืขืืื ืืฉืจืช Nginx:
- ืื ืืืช ืืืืืช ืืคืืืงืฆืื ืฉื React (
npm run build
). - ืืคืขืืช ืฉืจืช Nginx.
- ืืขืชืงืช ืชืืื ืืกืคืจืืื
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, ื ืืชื ืืืคืขืื ืืช ืืืคืืืงืฆืื ืขื ืืืื ื ืืืจืืืืืืช ืฉื Docker, ืฉืืชืืืชื ืชืืจืื ืื <docker-machine ip>:80
. ืืื ืืืืืช ืืช ืืชืืืช ื-IP ืฉื ืืืืฉื ืืืืจืืืืื ืฉื Docker, ืืชื ืืืื ืืืฉืชืืฉ ืืคืงืืื docker-machine ip
.
ืืฉืื ืื, ืืืืจ ืฉืืฉืงืช ืืืฆืืื ืืช ืืืื ืืืืฉืืืื ืืงืืื, ืืชื ืืืืจ ืืืืืช ืืกืืื ืืคืชืื ืืช ืืืฃ ืฉืื ืืืคืืคื.
โืงืืืฅ .docerignore
ืืืกืืฃ ืชืืื ืช ืืคืืืงืฆืื SA-Frontend
, ืืืืื ื ืืฉืื ืื ืฉืืชืืืื ืืื ืืชืืจืจ ืืืืื ืืืืชืจ. ืื ืงืืจื ืืืื ืฉืืงืฉืจ ืฉื ืื ืืืช ืืชืืื ื ืืืื ืืืืฉืื ืืืืื Docker. ืืกืคืจืืื ืืืืืฆืืช ืืช ืืงืฉืจ ื-build ืืฆืืื ืช ืืืจืืืื ื ืืืืจืื ืฉื ืืคืงืืื docker build
. ืืืงืจื ืฉืื ื, ืืฉ ื ืงืืื ืืกืืฃ ืืคืงืืื ืืื. ืื ืืืจื ืืืื ื ืืื ืืืืืื ืืืงืฉืจ ืืื ืืื:
sa-frontend:
| .dockerignore
| Dockerfile
| package.json
| README.md
+---build
+---node_modules
+---public
---src
ืืื ืืื ืืชืืงืืืช ืืงืืืืืช ืืื, ืื ืื ื ืฆืจืืืื ืจืง ืืช ืืชืืงืื build
. ืืืืขืื ืื ืืืจ ืืืจ ืื ืืืืื ืืื. ืืชื ืืืื ืืืืืฅ ืืช ืืื ืืื ืขื ืืื ืชืืื ื-Docker ืืืืื ืกืคืจืืืช ืืืชืขืื. ืืื ืืขืฉืืช ืืืช ืื ืื ื ืฆืจืืืื ืืช ืืงืืืฅ .dockerignore
. ืืชื, ืื ืืชื ืืืืจ ืืช ืืงืืืฅ .gitignore
, ืืืื ื ืฉื ืืงืืืฅ ืืื ืื ืจืื ืืืจืื ืืืืจ. ืื ืืคืจื ืกืคืจืืืช ืฉืืขืจืืช ืื ืืืช ืืชืืื ื ืืืืื ืืืชืขืื ืืื. ืืืงืจื ืฉืื ื, ืืชืืื ืฉื ืงืืืฅ ืื ื ืจืื ืื:
node_modules
src
public
ืงืืืฅ .dockerignore
ืืืื ืืืืืช ืืืืชื ืชืืงืื ืืื ืืงืืืฅ Dockerfile
. ืืขืช ืื ืืืช ืืชืืื ื ืชืืงื ืืกืคืจ ืฉื ืืืช.
ืืขืช ื ืขืืื ืขื ืืชืืื ื ืขืืืจ ืืคืืืงืฆืืืช Java.
โืื ืืืช ืชืืื ืช ืืืื ืขืืืจ ืืืฉืื Java
ืืชื ืืืืข ืื, ืืืจ ืืืืช ืืช ืื ืื ืฉืืชื ืฆืจืื ืืืขืช ืืื ืืืฆืืจ ืชืืื ืืช ืืืื. ืืื ืืงืืข ืืื ืืืื ืงืฆืจ ืืืื.
ืคืชื ืืช ืืงืืืฅ Dockerfile
ืฉื ืืฆื ืืชืืงืืืช ืืคืจืืืงื sa-webapp
. ืื ืชืงืจื ืืช ืืืงืกื ืฉื ืืงืืืฅ ืืื, ืชืจืื ืื ืจืง ืฉืชื ืงืื ืกืืจืืงืฆืืืช ืืืฉืืช, ืืื ืืืืืืช ืืืคืชื ENV
ะธ EXPOSE
:
ENV SA_LOGIC_API_URL http://localhost:5000
โฆ
EXPOSE 8080
ืืืืช ืืคืชื ENV
ืืืคืฉืจ ืื ืืืืจืื ืขื ืืฉืชื ื ืกืืืื ืืชืื ืืืืื Docker. ืืคืจื, ืืืงืจื ืฉืื ื, ืื ืืืคืฉืจ ืื ืืฆืืื ืืชืืืช URL ืืืืฉื ื-API ืฉื ืืืคืืืงืฆืื ืฉืืืฆืขืช ื ืืชืื ืืงืกื.
ืืืืช ืืคืชื EXPOSE
ืืืคืฉืจ ืื ืืืืจ ื-Docker ืืคืชืื ืคืืจื. ืื ื ืืืืืื ืืืฉืชืืฉ ืืืฆืืื ืื ืืืื ืืคืขืืช ืืืืฉืื. ืืื ืืชื ืืืื ืืฉืื ืื ืืื ื 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
. ืื ืืกืฃ, ืขืืื ื ืืืืืืจ ืืช ืืืฆืืื ืฉืขืืื ืืคืืืงืฆืืืช Python ืชืงืฉืื ืืืงืฉืืช ืืืคืืืงืฆืืืช Java ืขื ืืื ืืงืฆืื ืืืืฉ ืฉื ืืฉืชื ื ืืกืืืืSA_LOGIC_API_URL
:$ docker run -d -p 8080:8080 -e SA_LOGIC_API_URL='http://<container_ip or docker machine ip>:5000' $DOCKER_USER_ID/sentiment-analysis-web-app
ืืื ืืืืื ืืืฆื ืืืืืช ืืช ืืชืืืช ื-IP ืฉื ืงืื ืืืื ืจ Docker ืื ืืืฉื ืืืจืืืืื, ืขืืื ืืงืืืฅ
ืืืื ื ืคืขืื ืืช ืืืื ืืืืฉืืืื sa-frontend
:
docker run -d -p 80:80 $DOCKER_USER_ID/sentiment-analysis-frontend
ืขืืฉืื ืืื ืืืื ืืขืืืจ ืืืชืืืช ืืืคืืคื localhost:80
ืื ืกื ืืช ืืืคืืืงืฆืื.
ืฉืื ืื ืฉืื ืฉืื ืืช ืืช ืืืฆืืื ืขืืืจ sa-webapp
, ืื ืื ืืชื ืืคืขืื ืืืื ื ืืืจืืืืืืช ืฉื Docker, ืชืฆืืจื ืืขืจืื ืืช ืืงืืืฅ App.js
ืืชืื ืชืืงืืื sa-frontend
ืขื ืืื ืฉืื ืื ืืชืืืช ื-IP ืื ืืกืคืจ ืืืฆืืื ืืฉืืื analyzeSentence()
, ืืืืคืช ืืืืข ืขืืื ื ืืืงืื ื ืชืื ืื ืืืืฉื ืื. ืืืืจ ืืื, ืขืืื ืืืจืืื ืืืืฉ ืืช ืืชืืื ื ืืืืฉืชืืฉ ืื.
ืื ื ืจืื ืืืืืจืืช ืืืืฉืื ืฉืื ื ืืขืช.
ืฉืืจืืชื ืืืงืจื ืคืืขืืื ืืืืืืืช
ืกืืืื: ืืื ืื ืื ื ืฆืจืืืื ืืฉืืื Kubernetes?
ืื ืขืชื ืืืงื ื ืืช ืืชืืงืื Dockerfile
, ืืืืจ ืขื ืืื ืืื ืืช ืชืืื ืืช ืืืืืืฃ ืืืชื ืืืืืจ Docker. ืื ืืกืฃ, ืืืื ื ืืืฆื ืืืืืฅ ืืช ืืจืืืช ืืชืืื ืืช ืืืืฆืขืืช ืืงืืืฅ .dockerignore
. ืืชืืฆืื ืืื, ืฉืืจืืชื ืืืืงืจื ืฉืื ื ืคืืขืืื ืืขืช ืืงืื ืืืื ืจืื ืฉื Docker. ืืื ืืืื ืืฉ ืื ืฉืืื ืืืฆืืงืช ืืืืืืื ืืืื ืืื ืื ืื ื ืฆืจืืืื Kubernetes. ืืืืง ืืฉื ื ืฉื ืืืืจ ืื ืืืงืืฉ ืืืขื ื ืขื ืฉืืื ืื. ืืื ืชืืื, ืฉืงืื ืืช ืืฉืืื ืืืื:
ืืื ื ื ืื ืฉืืืฉืื ืืืื ืืจื ื ืฉืื ื ืื ืืชืื ืืงืกื ืืคื ืืคืืคืืืจื ืืจืืื ืืขืืื. ืืืืืื ื ืืงืฉืืช ืืืืขืืช ืืืื ืืื ืืงื. ืื ืืืืจ ืฉืืืงืจื-ืฉืืจืืชืื sa-webapp
ะธ sa-logic
ืืืื ืชืืช ืขืืืก ืขืฆืื. ืืืฆื ืืืชืืื ืงืื ืืืื ืจืื ืืืจืืฆืื ืฉืืจืืชื ืืืงืจื?
ืืงืืจ: www.habr.com