Op eiser Ufro huet den Habr en Hub erstallt a mir si frou déi éischt Verëffentlechung dran ze setzen. Abonnéieren!
Kubernetes ass einfach. Firwat bezuelen Banken mir vill Sue fir an dësem BerÀich ze schaffen, wÀhrend jidderee kann dës Technologie an nëmmen e puer Stonnen beherrschen?
Wann Dir Zweiwel datt Kubernetes sou séier ka geléiert ginn, proposéieren ech Iech selwer ze probéieren. NÀmlech, nodeems Dir dëst Material beherrscht hutt, kënnt Dir eng Applikatioun op Basis vu Mikroservicer an engem Kubernetes Cluster lafen. Ech kann dat garantéieren, well et ass genee déi selwecht Methodik déi hei benotzt gëtt, datt ech eise Clienten léieren mat Kubernetes ze schaffen. Wat mécht dëse Guide anescht wéi anerer? TatsÀchlech ginn et vill Saachen. Also, déi meescht vun dëse Materialien fÀnken un mat enger ErklÀrung vun einfache Saachen - d'Konzepter vu Kubernetes an d'Features vum Kommando kubectl. D'Auteuren vun dëse Materialien huelen un datt hir Lieser mat Applikatiounsentwécklung, Mikroservicer an Docker Container vertraut sinn. Mir ginn deen anere Wee. Als éischt wÀerte mir schwÀtzen iwwer wéi eng Applikatioun baséiert op Mikroservicer op engem Computer lafen. Da kucke mir Containerbilder fir all Mikroservice ze bauen. An duerno wÀerte mir Kubernetes kennen léieren a kucken wéi eng Applikatioun baséiert op Mikroservicer an engem Cluster dee vu Kubernetes geréiert gëtt.
Dës Approche, mat enger gradueller Approche fir Kubernetes, gëtt d'Tiefe vum VerstÀndnis vun deem wat geschitt ass, wat fir déi duerchschnëttlech Persoun néideg ass fir ze verstoen wéi einfach alles an Kubernetes funktionnéiert. Kubernetes ass sécher eng einfach Technologie, virausgesat datt déi, déi se léiere wëllen, wësse wou a wéi se benotzt gëtt.
Elo, ouni weider Ado, loosst eis ufÀnken a schwÀtzen iwwer d'Applikatioun mat dÀr mir wÀerte schaffen.
Experimentell Applikatioun
Eis Applikatioun wÀert nëmmen eng Funktioun ausféieren. Et hëlt ee Saz als Input, duerno, mat Hëllef vun Textanalyseinstrumenter, mécht et Sentimentanalyse vun dësem Saz, kritt eng BewÀertung vun der emotionaler Haltung vum Auteur vum Saz zu engem bestëmmten Objet.
Dëst ass wéi d'Haaptfenster vun dëser Applikatioun ausgesÀit.

Webapplikatioun fir Sentimentanalyse vun Texter
Aus enger technescher Siicht besteet d'Applikatioun aus drÀi Mikroservicer, déi jidderee e spezifesche Set vu Probleemer léist:
- SA-Frontend ass en Nginx Webserver deen statesch React Dateien servéiert.
- SA-WebApp ass eng Webapplikatioun geschriwwen op Java déi Ufroe vum Frontend veraarbecht.
- SA-Logic ass eng Python Applikatioun déi Sentimentanalyse op Text ausféiert.
Et ass wichteg ze bemierken datt Mikroservicer net isoléiert existéieren. Si implementéieren d'Iddi vun der "Trennung vu Verantwortung", awer glÀichzÀiteg musse se mateneen interagéieren.

Date fléisst an der Applikatioun
Am Diagramm uewendriwwer kënnt Dir déi nummeréiert Etappe vum System gesinn, illustréiert d'Datestroum an der Applikatioun. Loosst eis se kucken:
- De Browser freet eng Datei vum Server
index.html(wat am Tour de React Applikatiounspaket erofluet). - De Benotzer interagéiert mat der Applikatioun, dëst verursaacht en Opruff un d'Fréijoer-baséiert Webapplikatioun.
- D'Webapplikatioun schéckt d'Ufro fir Textanalyse un d'Python-Applikatioun weider.
- D'Python Applikatioun mĂ©cht Sentimentanalyse vum Text a gĂ«tt d'Resultat als Ăntwert op d'Ufro zrĂ©ck.
- D'FrĂ©ijoer Applikatioun schĂ©ckt eng Ăntwert op d'React Applikatioun (dĂ©i am Tour d'Resultat vun der Textanalyse dem Benotzer weist).
De Code fir all dës Uwendungen ka fonnt ginn . Ech recommandéieren Iech dëse Repository fir Iech selwer elo ze kopéieren, well et vill interessant Experimenter domat virun eis sinn.
Lafen eng Mikroservicer-basĂ©iert Applikatioun op Ărer lokaler Maschinn
Fir datt d'Applikatioun funktionnéiert, musse mir all drÀi Mikroservicer starten. Loosst eis mat der léifste vun hinnen all ufÀnken - d'Front-End Applikatioun.
â Setzt React fir lokal EntwĂ©cklung op
Fir eng React Applikatioun auszefĂ©ieren, musst Dir d'Node.js Plattform an NPM op Ărem Computer installĂ©ieren. Wann Dir all dĂ«st installĂ©iert hutt, benotzt den Terminal fir an Ăre Projet Dossier ze navigĂ©ieren sa-frontend a lafen de folgende Kommando:
npm install Andeems Dir dëse Kommando am Dossier leeft node_modules d'OfhÀngegkeete vun der React Applikatioun ginn gelueden, records vun deenen an der Datei sinn package.json. Wann d'OfhÀngegkeeten am selwechten Dossier erofgeluede ginn, fuert de folgende Kommando:
npm start Dat ass alles. Elo leeft d'React Applikatioun, Dir kĂ«nnt et zougrĂ€ifen andeems Dir op dĂ©i folgend Adress an Ărem Browser gitt: localhost:3000. Dir kĂ«nnt eppes a sengem Code Ă€nneren. Dir gesitt direkt den Effekt vun dĂ«sen Ănnerungen am Browser. DĂ«st ass mĂ©iglech duerch de sougenannte "waarm" Ersatz vu Moduler. DĂ«st mĂ©cht Front-End EntwĂ©cklung eng einfach an agreabel Erfahrung.
â Eng React Applikatioun fir d'Produktioun virbereeden
Fir den Zweck tatsÀchlech eng React Applikatioun ze benotzen, musse mir et an eng Rei vu statesche Dateien konvertéieren a se u Clienten servéieren mat engem Webserver.
Fir d'React Applikatioun ze bauen, erëm mam Terminal ze benotzen, navigéiert an den Dossier sa-frontend a lafen de folgende Kommando:
npm run build Dëst wÀert e Verzeechnes am Projet Dossier erstellen build. Et enthÀlt all statesch Dateien déi néideg sinn fir datt d'React Applikatioun funktionnéiert.
â DĂ©ngscht statesch Dateien mat Nginx
Als éischt musst Dir den Nginx Webserver installéieren a lafen. Dir kënnt et eroflueden an Instruktioune fannen wéi Dir se installéiert an ausféiert. Da musst Dir den Inhalt vum Dossier kopéieren sa-frontend/build an den Dossier [your_nginx_installation_dir]/html.
Mat dëser Approche ass d'Datei generéiert wÀrend dem Bauprozess vun der React Applikatioun index.html wÀert sinn um [your_nginx_installation_dir]/html/index.html. Dëst ass d'Datei, déi als Standard den Nginx-Server produzéiert wann Dir et zougitt. De Server ass konfiguréiert fir um Hafen ze lauschteren 80, awer et kann personaliséiert ginn wéi Dir braucht andeems Dir d'Datei Ànnert [your_nginx_installation_dir]/conf/nginx.conf.
Elo öffnen Ăre Browser a gitt op localhost:80. Dir gesitt d'React Applikatioun SĂ€it.

Reaktioun Applikatioun zerwéiert vum Nginx Server
Wann Dir elo eppes an den Terrain gitt Type your sentence an Press de KnÀppchen Send - nÀischt wÀert geschéien. Awer wann Dir d'Konsole kuckt, kënnt Dir Fehlermeldungen do gesinn. Fir ze verstoen wou genau dës Feeler optrieden, loosst eis den Applikatiounscode analyséieren.
âFront-End Applikatioun Code Analyse
Huelt e BlĂ©ck op de Fichier Code App.js, Mir kĂ«nne gesinn datt de KnĂ€ppchen drĂ©ckt Send rifft eng Method analyzeSentence(). De Code fir dĂ«s Method gĂ«tt Ă«nnendrĂ«nner uginn. NotĂ©iert w.e.g. datt fir all Zeil dĂ©i e Kommentar vum Formulaire huet # ĐĐŸĐŒĐ”Ń, et gĂ«tt eng ErklĂ€rung Ă«nner dem Code. Mir analysĂ©ieren aner Code Fragmenter an dĂ©i selwecht ManĂ©ier.
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. D'URL op déi d'POST Ufro gemaach gëtt. Et gëtt ugeholl datt et eng Applikatioun op dëser Adress ass, déi esou Ufroe erwaart.
2.D'Ufro Kierper un d'Applikatioun geschéckt. Hei ass e Beispill Ufro Kierper:
{
sentence: "I like yogobella!"
} 3.Wann eng Ăntwert op eng Ufro kritt gĂ«tt, gĂ«tt den Zoustand vun der Komponent aktualisĂ©iert. DĂ«st bewierkt datt d'Komponente nei gemaach gĂ«tt. Wa mir Daten krĂ©ien (dat ass e JSON-Objet deen d'Inputdaten an de berechenten Textpartitur enthĂ€lt), wĂ€erte mir de Komponent ausginn Polarity, well dĂ©i entspriechend Konditiounen erfĂ«llt ginn. DĂ«st ass wĂ©i mir d'Komponente beschreiwen:
const polarityComponent = this.state.polarity !== undefined ?
<Polarity sentence={this.state.sentence}
polarity={this.state.polarity}/> :
null; De Code schéngt ganz gutt ze schaffen. Wat ass falsch mat dësem, iwwerhaapt? Wann Dir ugeholl datt op der Adress, op déi d'Applikatioun probéiert eng POST-Ufro ze schécken, nach nÀischt ass, wat dës Ufro akzeptéiere kann a veraarbecht, da sidd Dir absolut richteg. NÀmlech fir Ufroen ze veraarbecht, déi am http://localhost:8080/sentiment, mir mussen eng Webapplikatioun op Basis vum Fréijoer lafen.

Mir brauchen eng Fréijoersapplikatioun déi eng POST Ufro akzeptéiere kann
â Eng FrĂ©ijoer-basĂ©iert Webapplikatioun opsetzen
Fir eng FrĂ©ijoersapplikatioun z'installĂ©ieren, braucht Dir JDK8 a Maven a richteg konfigurĂ©iert Ămfeldvariablen. Wann Dir dĂ«st alles installĂ©iert hutt, kĂ«nnt Dir weider un eisem Projet schaffen.
â Eng Applikatioun an eng Jar Datei packen
Navigéiert, mat engem Terminal, an den Dossier sa-webapp a gitt de folgende Kommando:
mvn install Nodeems Dir dëse Kommando am Dossier leeft sa-webapp e Verzeechnes gëtt erstallt target. Dëst ass wou d'Java Applikatioun lokaliséiert gëtt, verpackt an enger Jar Datei, representéiert vun der Datei sentiment-analysis-web-0.0.1-SNAPSHOT.jar.
âLafen eng Java Applikatioun
Gitt an den Dossier target a lafen d'Applikatioun mam folgendem Kommando aus:
java -jar sentiment-analysis-web-0.0.1-SNAPSHOT.jarE Feeler geschitt beim Ausféiere vun dësem Kommando. Fir et ze fixéieren, kënne mir d'Ausnahmsdetailer an de Stack Trace Daten analyséieren:
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}" Fir eis ass dat wichtegst hei d'Ernimmung vun der Onméiglechkeet d'Bedeitung ze klÀren sa.logic.api.url. Loosst eis de Code analyséieren an deem de Feeler geschitt.
âJava Applikatioun Code Analyse
Hei ass de Code Snippet wou de Feeler geschitt.
@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();
}
}- An S
entimentControlleret gëtt e FeldsaLogicApiUrl. SÀi WÀert gëtt vun der Immobilie spezifizéiertsa.logic.api.url. - Linn
saLogicApiUrlconcatenates mam WÀert/analyse/sentiment. Zesummen bilden se d'Adress fir en Uruff un de Mikroservice ze maachen deen Textanalyse mécht.
âSet e BesĂ«tz WĂ€ert
Am Fréijoer ass d'Standardquell vun ImmobiliewÀerter eng Datei application.properties, déi op sa-webapp/src/main/resources. Awer seng Notzung ass net deen eenzege Wee fir ImmobiliewÀerter ze setzen. Dëst kann och mat dem folgenden Kommando gemaach ginn:
java -jar sentiment-analysis-web-0.0.1-SNAPSHOT.jar --sa.logic.api.url=WHAT.IS.THE.SA.LOGIC.API.URLDe WÀert vun dëser Immobilie soll op d'Adress vun eiser Python Applikatioun weisen.
Andeems Dir et konfiguréiert, soen mir d'Fréijoer Webapplikatioun wou et muss goen fir Textanalyseufroen auszeféieren.
Fir eist Liewen net ze komplizĂ©iere wĂ€erte mir dĂ©cidĂ©ieren datt d'Python Applikatioun verfĂŒgbar ass localhost:5000 a loosst eis probĂ©ieren et net ze vergiessen. Als Resultat wĂ€ert de Kommando fir d'FrĂ©ijoersapplikatioun ze starten esou ausgesinn:
java -jar sentiment-analysis-web-0.0.1-SNAPSHOT.jar --sa.logic.api.url=http://localhost:5000 
Eise System fehlt eng Python Applikatioun
Elo alles wat mir maache mussen ass d'Python Applikatioun ausféieren an de System funktionnéiert wéi erwaart.
â Eng Python Applikatioun opsetzen
Fir eng Python Applikatioun auszefĂ©ieren, musst Dir Python 3 a Pip installĂ©iert hunn, an dĂ©i entspriechend Ămfeldvariablen musse richteg agestallt ginn.
â OfhĂ€ngegkeeten installĂ©ieren
Gitt an Ăre Projet Dossier sa-logic/sa a lafen dĂ©i folgend Kommandoen:
python -m pip install -r requirements.txt
python -m textblob.download_corporaâStart d'Applikatioun
Nodeems Dir d'OfhÀngegkeeten installéiert hutt, si mir prett fir d'Applikatioun auszeféieren:
python sentiment_analysis.pyNodeems Dir dëse Kommando ausgefouert hutt, wÀerte mir déi folgend soen:
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit) Dëst bedeit datt d'Applikatioun leeft a waart op Ufroe bei localhost:5000/
âCode Fuerschung
Loosst eis de Python Applikatiounscode kucken fir ze verstoen wéi et op Ufroe reagéiert:
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- En Objet initialiséieren
Flask. - Eng Adress spezifizéieren fir POST Ufroen ze maachen.
- Eng Immobilie zréckzéien
sentencevum Ufro Kierper. - Initialiséiere vun engem anonymen Objet
TextBloba kritt de WĂ€ertpolarityfir den Ă©ischte Saz am Kierper vun der Ufro kritt (an eisem Fall ass dĂ«st deen eenzege Saz fir Analyse geschĂ©ckt). - Retour eng Ăntwert, deem sĂ€i Kierper den Text vum Saz an de berechent Indikator dofir enthĂ€lt
polarity. - LancĂ©iere eng Flask Applikatioun, dĂ©i verfĂŒgbar ass um
0.0.0.0:5000(Dir kënnt et och zougrÀifen mat enger Konstruktioun vun der Formlocalhost:5000).
D'Mikroservicer, déi d'Applikatioun ausmaachen, lafen elo. Si sinn ofgestëmmt fir mateneen ze interagéieren. Dëst ass wéi d'Applikatiounsdiagramm an dëser Etapp vun der Aarbecht ausgesÀit.

All Mikroservicer, déi d'Applikatioun ausmaachen, ginn an d'Aarbechtskonditioun bruecht
Elo, ier Dir weider geet, öffnen Ăr React Applikatioun an engem Browser a probĂ©iert e Saz mat deem ze analysĂ©ieren. Wann alles richteg gemaach ass - nodeems Dir de KnĂ€ppchen drĂ©ckt Send Dir gesitt d'Analyseresultater Ă«nner dem Textfeld.
An der nÀchster Sektioun schwÀtze mir iwwer wéi mir eis Mikroservicer an Docker Container lafen. Dëst ass néideg fir d'Applikatioun virzebereeden fir op de Kubernetes Cluster ze lafen.
Docker Container
ass e System fir d'Deployment, d'SkalĂ©ierung an d'Gestioun vu containerisĂ©ierten Uwendungen ze automatisĂ©ieren. Et gĂ«tt och e "Containerorchestrator" genannt. Wann Kubernetes mat Container schafft, da musse mir ier Dir dĂ«se System benotzt, fir d'Ă©ischt dĂ«s Container ze krĂ©ien. Awer als Ă©ischt schwĂ€tze mer iwwer wat Container sinn. VlĂ€icht dĂ©i bescht Ăntwert op d'Fro wat et ass, kann an fonnt ginn an Docker:
E Container-Image ass e liicht, selbstĂ€nnegt, ausfĂ©ierbart Pak, dat eng Applikatioun enthĂ€lt, dĂ©i alles enthĂ€lt, wat nĂ©ideg ass fir se auszefĂ©ieren: Applikatiounscode, Runtime-Ămfeld, Systemtools a BibliothĂ©iken, an Astellungen. ContainerisĂ©iert Programmer kĂ«nnen an Ămfeld benotzt ginn. Linux Đž Windows, an si wĂ€erten Ă«mmer op dĂ©iselwecht ManĂ©ier funktionĂ©ieren, onofhĂ€ngeg vun der Infrastruktur.
DĂ«st bedeit datt Container op all Computer lafen kĂ«nnen, och Produktiounsserveren, an d'Applikatiounen, dĂ©i an hinnen enthale sinn, funktionnĂ©ieren d'selwecht an all Ămfeld.
Fir d'Features vu Container ze entdecken an se mat anere Weeër ze verglÀichen fir Uwendungen ze lafen, kucke mer e Beispill fir eng React Applikatioun mat enger virtueller Maschinn an engem Container ze déngen.
â DĂ©ngscht statesch Dateie vun enger React Applikatioun mat enger virtueller Maschinn
Probéiert de Service vu statesche Dateien mat virtuelle Maschinnen ze organiséieren, wÀerte mir déi folgend Nodeeler begéinen:
- Ineffizient Notzung vu Ressourcen, well all virtuell Maschinn e vollwÀertege Betribssystem ass.
- Plattform OfhÀngegkeet. Wat op engem lokalen Computer funktionnéiert, funktionnéiert vlÀicht net op engem Produktiounsserver.
- Lues a ressourceintensiv Skaléierung vun enger virtueller Maschinn-baséierter Léisung.

Nginx Webserver servéiert statesch Dateien op enger virtueller Maschinn
Wann Container benotzt gi fir en Àhnleche Problem ze léisen, dann, am Verglach mat virtuelle Maschinnen, kënnen déi folgend StÀerkten bemierkt ginn:
- Effizient Notzung vu Ressourcen: Schafft mam Betribssystem mat Docker.
- Plattform onofhÀngeg. E Container, deen en Entwéckler op sengem Computer lafen kann, funktionnéiert iwwerall.
- Liichtgewiicht Détachement duerch d'Benotzung vun Bildschichten.

Nginx Webserver servéiert statesch Dateien déi an engem Container lafen
Mir verglach nëmmen virtuell Maschinnen a Container op e puer Punkten, awer och dëst ass genuch fir e Gefill fir d'StÀerkte vu Container ze kréien. Dir kënnt Detailer iwwer Docker Container fannen.
â E Containerbild fir eng React Applikatioun bauen
De Basisbausteen vun engem Docker Container ass d'Datei Dockerfile. Am Ufank vun dëser Datei gëtt e Rekord vun der Basisbild vum Container gemaach, da gëtt et eng Sequenz vun Instruktiounen, déi uginn wéi e Container erstallt deen d'Bedierfnesser vun enger bestëmmter Applikatioun entsprécht.
Ier mer ufÀnken mat der Datei ze schaffen Dockerfile, loosst eis drun erënneren wat mir gemaach hunn fir d'React Applikatiounsdateien ze preparéieren fir op den Nginx Server eropzelueden:
- Bauen e React Applikatiounspaket (
npm run build). - Den Nginx Server starten.
- Verzeechnes Inhalt kopéieren
buildvum Projet Dossiersa-frontendan de Server Dossiernginx/html.
Hei drĂ«nner kĂ«nnt Dir d'Parallelen tĂ«scht engem Container erstellen an den uewe genannte SchrĂ«tt gesinn op Ărem lokalen Computer.
âD'Dockerfile fir d'SA-Frontend Applikatioun virbereeden
D'Instruktioune, déi an Dockerfile fir Uwendung SA-Frontend, besteet aus nëmmen zwou Equippen. De Fakt ass datt d'Nginx Entwécklungsteam eng Basis virbereet huet fir Nginx, déi mir benotze fir eist Bild ze kreéieren. Dëst sinn déi zwee Schrëtt déi mir musse beschreiwen:
- D'Basis vum Bild soll den Nginx Bild sinn.
- Dossier Inhalt
sa-frontend/buildmuss an d'Bild Dossier kopéiert ginnnginx/html.
Wann Dir vun dëser Beschreiwung op d'Datei gitt Dockerfile, da gesÀit et esou aus:
FROM nginx
COPY build /usr/share/nginx/html Wéi Dir gesitt, ass alles hei ganz einfach, an den Inhalt vun der Datei gëtt souguer ganz liesbar a verstÀndlech. Dëse Fichier seet de System d'Bild ze huelen nginx mat alles wat schonn dran ass, a kopéiert den Inhalt vum Verzeichnis build an den Dossier nginx/html.
Hei hutt Dir vlÀicht eng Fro iwwer wéi ech weess wou genau Dir musst Dateien aus dem Dossier kopéieren build, also wou de Wee hierkënnt /usr/share/nginx/html. TatsÀchlech gëtt et hei och nÀischt komplizéiert. De Fakt ass datt déi relevant Informatioun ka fonnt ginn Bild.
â D'Bild bauen an an de Repository eroplueden
Ier mir mat dem fÀerdege Bild kënne schaffen, musse mir et an de Bildrepository drécken. Fir dëst ze maachen, benotze mir déi gratis Cloud Image Hosting Plattform Docker Hub. Op dëser Etapp vun der Aarbecht musst Dir déi folgend maachen:
- Installéieren .
- Registréiert Iech op der Docker Hub WebsÀit.
- Mellt Iech op Ăre Kont un andeems Dir de folgende Kommando am Terminal leeft:
docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD"
Elo musst Dir den Terminal benotzen fir an de Verzeichnis ze goen sa-frontend a lafen de folgende Kommando do:
docker build -f Dockerfile -t $DOCKER_USER_ID/sentiment-analysis-frontend . Hei a weider an Ă€hnlechen Kommandoen $DOCKER_USER_ID soll mat Ărem Docker Hub Benotzernumm ersat ginn. Zum Beispill kann dĂ«sen Deel vum Kommando esou ausgesinn: rinormaloku/sentiment-analysis-frontend.
An dësem Fall kann dëse Kommando verkierzt ginn andeems Dir et ewechhuelt -f Dockerfile, well dës Datei schonn am Dossier existéiert an deem mir dëse Kommando ausféieren.
Fir de fÀerdege Bild an de Repository ze schécken, brauche mir de folgende Kommando:
docker push $DOCKER_USER_ID/sentiment-analysis-frontendNodeems Dir se ofgeschloss hutt, kontrollĂ©iert d'LĂ«scht vun Ăre Repositories op Docker Hub fir ze verstoen ob den Eroplueden vum Bild an d'Cloudlagerung erfollegrĂ€ich war.
âBehĂ€lter lafen
Elo kann jiddereen d'Bild eroflueden a lafen, bekannt als $DOCKER_USER_ID/sentiment-analysis-frontend. Fir dëst ze maachen, musst Dir déi folgend Sequenz vun Kommandoen ausféieren:
docker pull $DOCKER_USER_ID/sentiment-analysis-frontend
docker run -d -p 80:80 $DOCKER_USER_ID/sentiment-analysis-frontend Elo leeft de Container, mir kënne weider schaffen andeems mir aner Biller kreéieren déi mir brauchen. Awer ier mer weidergoen, loosst eis den Design verstoen 80:80, déi am Bildstartbefehl erschéngt a kann duerchernee schéngen.
- Ăischt Nummer
80- dëst ass d'Hostportnummer (dat ass de lokale Computer). - Zweet Zuel
80ass den Hafen vum Container un deen d'Demande weidergeleet soll ginn.
Betruecht déi folgend Illustratioun.

Port Forwarding
De System redirects Ufroe vum Hafen <hostPort> an den Hafen <containerPort>. Dat ass, Zougang zum Hafen 80 Computer gëtt op den Hafen ëmgeleet 80 Container.
ZĂ«nter dem Hafen 80 op de lokalen Computer opgemaach, da kĂ«nnt Dir op d'Applikatioun vun dĂ«sem Computer op localhost:80. Wann Ăre System den Docker net Ă«nnerstĂ«tzt, kann d'Applikatioun op enger Docker virtueller Maschinn lafen, d'Adress vun dĂ€r ausgesĂ€it <docker-machine ip>:80. Fir d'IP Adress vun der Docker virtueller Maschinn erauszefannen, kĂ«nnt Dir de Kommando benotzen docker-machine ip.
Zu dësem ZÀitpunkt, nodeems Dir de Front-End Applikatioun Container erfollegrÀich lancéiert hutt, sollt Dir fÀeg sinn seng SÀit am Browser opzemaachen.
âD'.dockerignore Datei
Sammelen eng Applikatioun Bild SA-Frontend, mir konnten feststellen datt dëse Prozess extrem lues ass. Dëst geschitt well de Kontext vum Bildbau muss un den Docker Daemon geschéckt ginn. De Verzeichnis deen de Baukontext representéiert gëtt als lescht Argument vum Kommando uginn docker build. An eisem Fall gëtt et e Punkt um Enn vun dësem Kommando. Dëst verursaacht datt déi folgend Struktur am Baukontext abegraff ass:
sa-frontend:
| .dockerignore
| Dockerfile
| package.json
| README.md
+---build
+---node_modules
+---public
---src Awer vun all den Dossieren déi hei prÀsent sinn, brauche mir nëmmen den Dossier build. Alles anescht ze lueden ass eng Verschwendung vun ZÀit. Dir kënnt de Bau beschleunegen andeems Dir Docker seet wéi eng Verzeechnes ze ignoréieren. Et ass fir dëst ze maachen datt mir de Fichier brauchen .dockerignore. Dir, wann Dir mat der Datei kennt .gitignore, wÀert d'Struktur vun dësem Fichier wahrscheinlech vertraut schéngen. Et listet Verzeichnisser déi de Bildbausystem ignoréiere kann. An eisem Fall gesÀit den Inhalt vun dëser Datei esou aus:
node_modules
src
public Fichier .dockerignore muss am selwechten Dossier wéi d'Datei sinn Dockerfile. Elo baut d'Bild eng Saach vu Sekonnen.
Loosst eis elo um Bild fir d'Java Applikatioun schaffen.
â E Containerbild fir eng Java Applikatioun bauen
Dir wësst wat, Dir hutt schonn alles geléiert wat Dir wësse musst fir Containerbilder ze kreéieren. Dofir wÀert dës Rubrik ganz kuerz sinn.
De Fichier opmaachen Dockerfiledéi am Projet Dossier ass sa-webapp. Wann Dir den Text vun dësem Fichier liest, gesitt Dir nëmmen zwee nei Konstruktiounen dran, ugefaange mat de Schlësselwieder ENV О EXPOSE:
ENV SA_LOGIC_API_URL http://localhost:5000
âŠ
EXPOSE 8080 SchlĂ«sselwuert ENV Erlaabt Iech Ămfeldvariablen an Docker Container ze deklarĂ©ieren. Besonnesch an eisem Fall erlaabt et Iech eng URL ze spezifizĂ©ieren fir Zougang zu der API vun der Applikatioun dĂ©i Textanalyse mĂ©cht.
Schlësselwuert EXPOSE erlaabt Iech Docker ze soen fir e Port opzemaachen. Mir wÀerten dësen Hafen benotzen wann Dir d'Applikatioun leeft. Hei kënnt Dir feststellen, datt am Dockerfile fir Uwendung SA-Frontend et gëtt keen esou Kommando. Dëst ass nëmme fir Dokumentatiounszwecker, dat heescht, dës Konstruktioun ass geduecht fir deen dee liest Dockerfile.
D'Bild bauen an et an de Repository drĂ©cken gesĂ€it genau d'selwecht aus wĂ©i am virege Beispill. Wann Dir nach net ganz zouversiichtlech an Ăre FĂ€egkeeten sidd, kĂ«nnen dĂ©i entspriechend Kommandoen an der Datei fonnt ginn README.md am Dossier sa-webapp.
â Bauen vun engem Containerbild fir eng Python Applikatioun
Wann Dir den Inhalt vun der Datei kuckt Dockerfile am Dossier sa-logic, da fannt Dir do nÀischt Neies fir Iech. D'Befehle fir d'Bild opzebauen an an de Repository ze schécken, sollten Iech och scho vertraut sinn, awer, wéi mat eisen aneren Uwendungen, kënnen se an der Datei fonnt ginn README.md am Dossier sa-logic.
âContainerisĂ©ierter Uwendungen testen
Kënnt Dir eppes vertrauen wat Dir net getest hutt? Ech kann och net. Loosst eis eis Container testen.
- Loosst eis den Applikatiounscontainer starten
sa-logica konfiguréieren et fir um Hafen ze lauschteren5050:docker run -d -p 5050:5000 $DOCKER_USER_ID/sentiment-analysis-logic - Loosst eis den Applikatiounscontainer starten
sa-webappa konfigurĂ©ieren et fir um Hafen ze lauschteren8080. ZousĂ€tzlech musse mir den Hafen konfigurĂ©ieren, op deem d'Python-Applikatioun no Ufroe vun der Java-Applikatioun lauschtert andeems d'Ămfeldvariabel Ă«mgeetSA_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
Fir ze léieren wéi Dir d'IP Adress vun engem Docker Container oder virtuell Maschinn erausfënnt, kuckt op d'Datei .
Loosst eis den Applikatiounscontainer starten sa-frontend:
docker run -d -p 80:80 $DOCKER_USER_ID/sentiment-analysis-frontend Elo ass alles prett fir op d'Adress am Browser ze goen localhost:80 a probéiert d'Applikatioun.
Maacht weg datt wann Dir den Hafen geÀnnert hutt fir sa-webapp, oder wann Dir eng Docker virtuell Maschinn leeft, musst Dir d'Datei Ànneren App.js aus engem Dossier sa-frontendandeems Dir d'IP Adress oder d'Portnummer an der Method Ànneren analyzeSentence(), Ersatz vun aktuell Informatioun amplaz vun alen Donnéeën. Duerno musst Dir d'Bild erëm zesummesetzen a benotzen.
Dëst ass wéi eis Uwendungsdiagramm elo ausgesÀit.

Mikroservicer lafen a Container
Resumé: Firwat brauche mir e Kubernetes Cluster?
Mir hu just d'Dossieren iwwerpréift Dockerfile, geschwat wéi Dir Biller bauen an se an en Docker Repository drécken. ZousÀtzlech hu mir geléiert wéi d'Bildversammlung mat der Datei beschleunegt gëtt .dockerignore. Als Resultat lafen eis Mikroservicer elo an Docker Container. Hei hutt Dir vlÀicht eng komplett gerechtfÀerdegt Fro iwwer firwat mir Kubernetes brauchen. Den zweeten Deel vun dësem Material gëtt op dës Fro gewidmet. An der TëschenzÀit, betruecht déi folgend Fro:
Loosst eis unhuelen datt eis Webapplikatioun fir Textanalyse weltwÀit populÀr ginn ass. Millioune vun Demanden kommen him all Minutt. Dëst bedeit datt Mikroservicer sa-webapp О sa-logic wÀert ënner enorm Laascht sinn. Wéi Skala Container Lafen Mikroservicer?
Source: will.com
