د Kubernetes ښوونې برخه 1: غوښتنلیکونه، کوچني خدمتونه، او کانټینرونه

زموږ په غوښتنه، حبر یو مرکز جوړ کړ کوبنیټس او موږ خوښ یو چې لومړۍ خپرونه یې په کې ځای په ځای کړه. ګډون وکړئ!

Kubernetes اسانه دی. ولې بانکونه ماته په دې برخه کې د کار کولو لپاره ډیرې پیسې ورکوي، پداسې حال کې چې څوک کولی شي په څو ساعتونو کې دا ټیکنالوژي ماسټر کړي؟

د Kubernetes ښوونې برخه 1: غوښتنلیکونه، کوچني خدمتونه، او کانټینرونه

که تاسو شک لرئ چې Kubernetes دومره ژر زده کیدی شي، زه وړاندیز کوم چې تاسو پخپله هڅه وکړئ. د مثال په توګه ، د دې موادو ماسټر کولو سره ، تاسو به وکولی شئ د کوبرنیټس کلستر کې د مایکرو خدماتو پراساس یو غوښتنلیک پرمخ وړئ. زه دا تضمین کولی شم ، ځکه چې دا دقیقا ورته میتودولوژي ده چې دلته کارول کیږي چې زه خپلو پیرودونکو ته د کوبرنیټس سره کار کولو ښوونه کوم. څه شی دا لارښود د نورو څخه توپیر کوي؟ په حقیقت کې، ډیری شیان شتون لري. نو، ډیری دا مواد د ساده شیانو تشریح سره پیل کیږي - د Kubernetes مفکورې او د kubectl کمانډ ځانګړتیاوې. د دې موادو لیکوالان ګومان کوي ​​چې د دوی لوستونکي د غوښتنلیک پراختیا ، مایکرو خدماتو ، او ډاکر کانټینرونو سره آشنا دي. موږ به بله لاره ځو. لومړی، موږ به په کمپیوټر کې د مایکرو خدماتو پراساس د غوښتنلیک چلولو څرنګوالي په اړه وغږیږو. بیا به موږ د هر مایکرو خدمت لپاره د کانټینر عکسونو جوړولو ته ګورو. او له هغې وروسته ، موږ به د کوبرنیټس سره آشنا شو او د کوبرنیټس لخوا اداره شوي کلسټر کې د مایکرو خدماتو پراساس د غوښتنلیک ځای په ځای کولو ته ګورو.

دا طریقه، د کوبرنیټس ته د تدریجي چلند سره، به د هغه څه د پوهیدو ژورتیا ورکړي چې څه پیښیږي چې د اوسط کس لپاره اړین دي ترڅو پوه شي چې څنګه په کوبرنیټس کې هرڅه په ساده ډول کار کوي. Kubernetes یقینا یو ساده ټیکنالوژي ده، په دې شرط چې هغه څوک چې دا زده کړي غواړي پوه شي چې چیرته او څنګه کارول کیږي.

اوس، پرته له نورو اډو، راځئ چې پیل وکړو او د هغه غوښتنلیک په اړه وغږیږو چې موږ به ورسره کار وکړو.

تجربوي غوښتنلیک

زموږ غوښتنلیک به یوازې یو فعالیت ترسره کړي. دا یوه جمله د انپټ په توګه اخلي، وروسته له دې، د متن تحلیلي وسیلو په کارولو سره، دا د دې جملې احساساتي تحلیل ترسره کوي، د یوې ټاکلې شی لپاره د جملې د لیکوال احساساتي چلند ارزونه ترلاسه کوي.

دا هغه څه دي چې د دې غوښتنلیک اصلي کړکۍ ورته ښکاري.

د Kubernetes ښوونې برخه 1: غوښتنلیکونه، کوچني خدمتونه، او کانټینرونه
د متنونو احساساتي تحلیل لپاره ویب غوښتنلیک

د تخنیکي نقطې نظر څخه، غوښتنلیک درې مایکرو خدمتونه لري، چې هر یو یې د ستونزو ځانګړي سیټ حل کوي:

  • SA-Frontend یو Nginx ویب سرور دی چې د جامد عکس العمل فایلونو خدمت کوي.
  • SA-WebApp یو ویب اپلیکیشن دی چې په جاوا کې لیکل شوی چې د مخکني پای څخه غوښتنې پروسس کوي.
  • SA-Logic د Python غوښتنلیک دی چې په متن کې د احساساتو تحلیل ترسره کوي.

دا مهمه ده چې یادونه وکړو چې مایکرو خدمتونه په انزوا کې شتون نلري. دوی د "مسولیتونو جلا کولو" مفکوره پلي کوي، مګر په ورته وخت کې دوی باید د یو بل سره اړیکه ونیسي.

د Kubernetes ښوونې برخه 1: غوښتنلیکونه، کوچني خدمتونه، او کانټینرونه
په غوښتنلیک کې ډاټا جریان کوي

په پورتني ډیاګرام کې، تاسو کولی شئ د سیسټم شمیرې مرحلې وګورئ، په غوښتنلیک کې د معلوماتو جریان روښانه کول. راځئ چې دوی وګورو:

  1. براوزر له سرور څخه د فایل غوښتنه کوي index.html (کوم چې په بدل کې د عکس العمل غوښتنلیک بسته ډاونلوډ کوي).
  2. کارونکي د غوښتنلیک سره اړیکه لري، دا د پسرلي پر بنسټ ویب غوښتنلیک ته د زنګ وهلو لامل کیږي.
  3. د ویب غوښتنلیک د پایتون غوښتنلیک ته د متن تحلیل ترسره کولو غوښتنه وړاندې کوي.
  4. د پایتون غوښتنلیک د متن احساساتي تحلیل ترسره کوي او غوښتنې ته د ځواب په توګه پایله بیرته راوړي.
  5. د پسرلي غوښتنلیک د عکس العمل غوښتنلیک ته ځواب لیږي (کوم چې په پایله کې کارونکي ته د متن تحلیل پایله ښیې).

د دې ټولو غوښتنلیکونو لپاره کوډ موندل کیدی شي دلته. زه وړاندیز کوم چې تاسو همدا اوس د ځان لپاره دا ذخیره کاپي کړئ ، ځکه چې زموږ په وړاندې د دې سره ډیری په زړه پوري تجربې شتون لري.

ستاسو په محلي ماشین کې د مایکرو خدماتو پراساس غوښتنلیک چلول

د دې لپاره چې د غوښتنلیک کار وکړي، موږ باید ټول درې مایکرو خدمتونه پیل کړو. راځئ چې د دې ټولو څخه خورا ښکلي سره پیل وکړو - د مخکښې پای غوښتنلیک.

▍ د محلي پراختیا لپاره غبرګون تنظیم کړئ

د عکس العمل غوښتنلیک چلولو لپاره ، تاسو اړتیا لرئ په خپل کمپیوټر کې د Node.js پلیټ فارم او NPM نصب کړئ. یوځل چې تاسو دا ټول نصب کړئ ، د خپلې پروژې فولډر ته د تګ لپاره ترمینل وکاروئ sa-frontend او لاندې کمانډ چل کړئ:

npm install

په فولډر کې د دې کمانډ په چلولو سره node_modules د عکس العمل غوښتنلیک انحصار به پورته شي، کوم ریکارډونه چې په فایل کې دي package.json. یوځل چې انحصار په ورته فولډر کې ډاونلوډ شي ، لاندې کمانډ چل کړئ:

npm start

بس نور څه نه. اوس د عکس العمل اپلیکیشن روان دی، تاسو کولی شئ په خپل براوزر کې لاندې پتې ته د تګ له لارې لاسرسی ومومئ: localhost:3000. تاسو کولی شئ د دې کوډ کې یو څه بدل کړئ. تاسو به سمدلاسه په براوزر کې د دې بدلونونو اغیز وګورئ. دا د ماډلونو د تش په نامه "ګرم" بدیل څخه مننه ممکنه ده. دا د مخکینۍ پای پراختیا یو ساده او خوندور تجربه کوي.

▍د تولید لپاره د عکس العمل غوښتنلیک چمتو کول

د واقعیا د عکس العمل غوښتنلیک کارولو هدف لپاره ، موږ اړتیا لرو دا د جامد فایلونو سیټ ته واړوو او د ویب سرور په کارولو سره پیرودونکو ته یې خدمت وکړو.

د عکس العمل غوښتنلیک رامینځته کولو لپاره ، بیا د ټرمینل په کارولو سره ، فولډر ته لاړشئ sa-frontend او لاندې کمانډ چل کړئ:

npm run build

دا به د پروژې فولډر کې لارښود رامینځته کړي build. دا به د عکس العمل غوښتنلیک کار کولو لپاره اړین ټول جامد فایلونه ولري.

▍ د Nginx په کارولو سره د جامد فایلونو خدمت کول

لومړی تاسو اړتیا لرئ د نګینکس ویب سرور نصب او چل کړئ. دا تاسو کولی شئ دا ډاونلوډ کړئ او د نصبولو او چلولو څرنګوالي په اړه لارښوونې ومومئ. بیا تاسو اړتیا لرئ د فولډر مینځپانګې کاپي کړئ sa-frontend/build فولډر ته [your_nginx_installation_dir]/html.

د دې طریقې سره، فایل د عکس العمل غوښتنلیک جوړولو پروسې په جریان کې رامینځته شوی index.html کې به موجود وي [your_nginx_installation_dir]/html/index.html. دا هغه فایل دی چې د ډیفالټ په واسطه، د نګینکس سرور تولیدوي کله چې دې ته لاسرسی ومومي. سرور په بندر کې د اوریدلو لپاره ترتیب شوی 80، مګر دا د فایل په سمولو سره د اړتیا سره سم تنظیم کیدی شي [your_nginx_installation_dir]/conf/nginx.conf.

اوس خپل براوزر خلاص کړئ او لاړ شئ localhost:80. تاسو به د عکس العمل غوښتنلیک پاڼه وګورئ.

د Kubernetes ښوونې برخه 1: غوښتنلیکونه، کوچني خدمتونه، او کانټینرونه
د غبرګون غوښتنلیک د Nginx سرور لخوا خدمت شوی

که تاسو اوس میدان ته یو څه داخل کړئ Type your sentence او تڼۍ فشار کړئ Send - هیڅ به نه کیږي. مګر، که تاسو کنسول ته ګورئ، تاسو کولی شئ هلته د خطا پیغامونه وګورئ. د دې لپاره چې پوه شي چې دا غلطیان چیرته پیښیږي، راځئ چې د غوښتنلیک کوډ تحلیل کړو.

▍ د مخکینۍ پای غوښتنلیک کوډ تحلیل

د فایل کوډ ته یو نظر وګورئ App.js، موږ کولی شو دا د تڼۍ په فشارولو سره وګورو Send طریقه بولي analyzeSentence(). د دې میتود لپاره کوډ لاندې ورکړل شوی. مهرباني وکړئ په یاد ولرئ چې د هرې کرښې لپاره چې د فورمې تبصره لري # Номер، د کوډ لاندې ورکړل شوي توضیحات شتون لري. موږ به د کوډ نورې برخې په ورته ډول تحلیل کړو.

analyzeSentence() {
    fetch('http://localhost:8080/sentiment', {  // #1
        method: 'POST',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({
                       sentence: this.textField.getValue()})// #2
    })
        .then(response => response.json())
        .then(data => this.setState(data));  // #3
}

1. هغه 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، موږ اړتیا لرو چې د پسرلي پراساس ویب اپلیکیشن چل کړو.

د Kubernetes ښوونې برخه 1: غوښتنلیکونه، کوچني خدمتونه، او کانټینرونه
موږ د پسرلي غوښتنلیک ته اړتیا لرو چې د POST غوښتنه ومني

▍ د پسرلي پر بنسټ د ویب غوښتنلیک تنظیم کول

د پسرلي غوښتنلیک پلي کولو لپاره ، تاسو به JDK8 او ماون ته اړتیا ولرئ او په سمه توګه تنظیم شوي چاپیریال متغیرونه. یوځل چې تاسو دا ټول نصب کړئ ، تاسو کولی شئ زموږ په پروژه کار کولو ته دوام ورکړئ.

▍ په جار فایل کې د غوښتنلیک بسته کول

د ټرمینل په کارولو سره فولډر ته لاړشئ sa-webapp او لاندې کمانډ دننه کړئ:

mvn install

په فولډر کې د دې کمانډ چلولو وروسته sa-webapp یو لارښود به جوړ شي target. دا هغه ځای دی چې د جاوا غوښتنلیک به موقعیت ولري، په جار فایل کې بسته شوی، د فایل لخوا استازیتوب کیږي sentiment-analysis-web-0.0.1-SNAPSHOT.jar.

▍د جاوا اپلیکیشن چلول

فولډر ته لاړشئ target او غوښتنلیک د لاندې کمانډ سره پرمخ وړئ:

java -jar sentiment-analysis-web-0.0.1-SNAPSHOT.jar

د دې کمانډ اجرا کولو پرمهال به یوه تېروتنه رامنځته شي. د دې د سمولو پیل کولو لپاره، موږ کولی شو د سټیک ټریس ډیټا کې د استثنا توضیحات تحلیل کړو:

Error creating bean with name 'sentimentController': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'sa.logic.api.url' in value "${sa.logic.api.url}"

زموږ لپاره، دلته ترټولو مهم شی د معنی روښانه کولو د ناممکنیت یادونه ده sa.logic.api.url. راځئ هغه کوډ تحلیل کړو په کوم کې چې خطا واقع کیږي.

▍جاوا غوښتنلیک کوډ تحلیل

دلته د کوډ ټوټه ده چیرې چې خطا پیښیږي.

@CrossOrigin(origins = "*")
@RestController
public class SentimentController {
    @Value("${sa.logic.api.url}")    // #1
    private String saLogicApiUrl;
    @PostMapping("/sentiment")
    public SentimentDto sentimentAnalysis(
        @RequestBody SentenceDto sentenceDto) 
    {
        RestTemplate restTemplate = new RestTemplate();
        return restTemplate.postForEntity(
                saLogicApiUrl + "/analyse/sentiment",    // #2
                sentenceDto, SentimentDto.class)
                .getBody();
    }
}

  1. په SentimentController یو میدان شته saLogicApiUrl. د هغې ارزښت د ملکیت لخوا مشخص شوی sa.logic.api.url.
  2. کرښه saLogicApiUrl ارزښت سره تړاو لري /analyse/sentiment. په ګډه دوی مایکرو سرویس ته د زنګ وهلو لپاره پته رامینځته کوي چې د متن تحلیل ترسره کوي.

▍د ملکیت ارزښت وټاکئ

په پسرلي کې، د ملکیت ارزښتونو معیاري سرچینه یوه فایل دی application.properties، کوم چې موندل کیدی شي sa-webapp/src/main/resources. مګر د دې کارول د ملکیت ارزښتونو ټاکلو یوازینۍ لار نه ده. دا د لاندې کمانډ په کارولو سره هم ترسره کیدی شي:

java -jar sentiment-analysis-web-0.0.1-SNAPSHOT.jar --sa.logic.api.url=WHAT.IS.THE.SA.LOGIC.API.URL

د دې ملکیت ارزښت باید زموږ د Python غوښتنلیک پته په ګوته کړي.

د دې په ترتیب کولو سره، موږ د پسرلي ویب غوښتنلیک ته ووایو چیرې چې دا د متن تحلیل غوښتنې ترسره کولو لپاره اړتیا لري.

د دې لپاره چې زموږ ژوند پیچلی نشي، موږ به پریکړه وکړو چې د Python غوښتنلیک به شتون ولري localhost:5000 او راځئ هڅه وکړو چې د هغې په اړه هیر نکړو. د پایلې په توګه، د پسرلي غوښتنلیک پیل کولو قوماندې به داسې ښکاري:

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

د Kubernetes ښوونې برخه 1: غوښتنلیکونه، کوچني خدمتونه، او کانټینرونه
زموږ سیسټم د 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

  1. د یو څیز پیل کول Flask.
  2. دې ته د POST غوښتنې ترسره کولو لپاره د پته مشخص کول.
  3. د ملکیت بیرته ترلاسه کول sentence د غوښتنې بدن څخه.
  4. د یو نامعلوم څیز پیل کول TextBlob او ارزښت ترلاسه کوي polarity د غوښتنې په بدن کې ترلاسه شوي لومړۍ جملې لپاره (زموږ په قضیه کې ، دا یوازینۍ جمله ده چې د تحلیل لپاره لیږل شوې).
  5. د ځواب بیرته راګرځول چې په بدن کې د جملې متن او د هغې لپاره محاسبه شوي شاخص لري polarity.
  6. د فلاسک غوښتنلیک پیل کړئ، کوم چې به شتون ولري 0.0.0.0:5000 (تاسو کولی شئ د فارم جوړولو په کارولو سره هم ورته لاسرسی ومومئ localhost:5000).

هغه مایکرو خدمتونه چې غوښتنلیک جوړوي اوس روان دي. دوی د یو بل سره د تعامل لپاره تنظیم شوي. دا هغه څه دي چې د غوښتنلیک ډیاګرام د کار پدې مرحله کې ښکاري.

د Kubernetes ښوونې برخه 1: غوښتنلیکونه، کوچني خدمتونه، او کانټینرونه
ټول کوچني خدمتونه چې غوښتنلیک جوړوي په کاري ترتیب کې راوړل شوي

اوس، مخکې له دې چې تاسو دوام ورکړئ، خپل د عکس العمل غوښتنلیک په براوزر کې پرانیزئ او هڅه وکړئ چې ځینې جملې یې پارس کړئ. که هرڅه په سمه توګه ترسره شي - د تڼۍ فشارولو وروسته Send تاسو به د متن ساحې لاندې د تحلیل پایلې وګورئ.

په راتلونکې برخه کې، موږ به د ډاکر کانټینرونو کې زموږ د مایکرو خدماتو چلولو څرنګوالي په اړه وغږیږو. دا د دې لپاره اړین دی چې غوښتنلیک چمتو کړئ ترڅو په کوبرنیټس کلستر کې چلیږي.

د ډاکر کانتینرونه

کوبنیټس د کانټینر شوي غوښتنلیکونو پلي کولو ، اندازه کولو او مدیریت اتومات کولو سیسټم دی. دا د "کانټینر آرکیسټرټر" په نوم هم یادیږي. که Kubernetes د کانټینرونو سره کار کوي، نو د دې سیسټم کارولو دمخه موږ باید لومړی دا کانتینرونه ترلاسه کړو. مګر لومړی، راځئ چې د کانټینرونو په اړه خبرې وکړو. شاید د دې پوښتنې لپاره چې دا څه دي غوره ځواب موندل کیدی شي اسناد ډاکر ته:

د کانټینر عکس یو لږ وزن لرونکی ، ځان لرونکی ، د اجرا وړ کڅوړه ده چې یو غوښتنلیک لري ، کوم چې د دې چلولو لپاره اړین هرڅه پکې شامل دي: د غوښتنلیک کوډ ، د اجرا کولو چاپیریال ، د سیسټم اوزار او کتابتونونه ، ترتیبات. کانټینر شوي برنامې په لینکس او وینډوز چاپیریال کې کارول کیدی شي ، او دوی به تل د زیربنا په پام کې نیولو پرته ورته کار وکړي.

دا پدې مانا ده چې کانټینرونه په هر کمپیوټر کې چلیدلی شي، په شمول د تولید سرورونه، او په دوی کې موجود غوښتنلیکونه به په هر چاپیریال کې ورته کار وکړي.

د کانټینرونو ب featuresو سپړلو او د غوښتنلیکونو چلولو نورو لارو سره یې پرتله کولو لپاره ، راځئ چې د مجازی ماشین او کانټینر په کارولو سره د عکس العمل غوښتنلیک خدمت کولو مثال وګورو.

▍ د مجازی ماشین په کارولو سره د عکس العمل غوښتنلیک جامد فایلونو خدمت کول

د مجازی ماشینونو په کارولو سره د جامد فایلونو خدمت تنظیم کولو هڅه کول، موږ به د لاندې زیانونو سره مخ شو:

  1. د سرچینو بې کفایته کارول، ځکه چې هر مجازی ماشین یو بشپړ عملیاتي سیسټم دی.
  2. د پلیټ فارم انحصار. هغه څه چې په محلي کمپیوټر کې کار کوي ممکن د تولید سرور کې کار ونکړي.
  3. د مجازی ماشین پراساس حل ورو او د سرچینې ژور پیمانه کول.

د Kubernetes ښوونې برخه 1: غوښتنلیکونه، کوچني خدمتونه، او کانټینرونه
د نګینکس ویب سرور په مجازی ماشین کې د جامد فایلونو خدمت کوي

که کانټینرونه د ورته ستونزې حل کولو لپاره کارول کیږي، نو بیا، د مجازی ماشینونو په پرتله، لاندې قوتونه یادونه کیدی شي:

  1. د سرچینو مؤثره کارول: د ډاکر په کارولو سره د عملیاتي سیسټم سره کار کول.
  2. پلیټ فارم خپلواک. یو کانټینر چې یو پرمخ وړونکی کولی شي خپل کمپیوټر پرمخ بوځي هرچیرې به کار وکړي.
  3. د عکس پرتونو کارولو له لارې د سپک وزن ځای په ځای کول.

د Kubernetes ښوونې برخه 1: غوښتنلیکونه، کوچني خدمتونه، او کانټینرونه
د نګینکس ویب سرور په کانټینر کې د جامد فایلونو خدمت کوي

موږ یوازې په څو ټکو کې مجازی ماشینونه او کانټینرونه پرتله کړل ، مګر حتی دا د کانټینرونو ځواک لپاره احساس ترلاسه کولو لپاره کافي دی. دا تاسو کولی شئ د ډاکر کانټینرونو په اړه توضیحات ومومئ.

▍ د عکس العمل غوښتنلیک لپاره د کانټینر عکس جوړول

د ډاکر کانټینر بنسټیز ودانۍ بلاک فایل دی Dockerfile. د دې دوتنې په پیل کې، د کانټینر د بنسټیز انځور څخه یو ریکارډ جوړ شوی، بیا د لارښوونو لړۍ شتون لري چې دا په ګوته کوي چې څنګه یو کانټینر جوړ کړي چې د یو ځانګړي غوښتنلیک اړتیاوې پوره کړي.

مخکې لدې چې موږ د فایل سره کار پیل کړو Dockerfile، راځئ چې په یاد ولرو چې موږ د Nginx سرور ته د اپلوډ کولو لپاره د عکس العمل غوښتنلیک فایلونو چمتو کولو لپاره څه وکړل:

  1. د عکس العمل غوښتنلیک بسته جوړول (npm run build).
  2. د نګینکس سرور پیل کول.
  3. د لارښود منځپانګې کاپي کول build د پروژې فولډر څخه sa-frontend د سرور فولډر ته nginx/html.

لاندې تاسو کولی شئ د کانټینر رامینځته کولو او ستاسو په محلي کمپیوټر کې ترسره شوي پورتنیو مرحلو ترمینځ موازي وګورئ.

▍د SA-Frontend غوښتنلیک لپاره د Dockerfile چمتو کول

هغه لارښوونې چې په کې به شامل وي Dockerfile د کاریال لپاره SA-Frontend، یوازې دوه ټیمونه لري. حقیقت دا دی چې د Nginx پراختیایی ټیم یو بنسټیز چمتو کړی انځور د نګینکس لپاره، کوم چې موږ به د خپل انځور جوړولو لپاره وکاروو. دا دوه مرحلې دي چې موږ یې تشریح کولو ته اړتیا لرو:

  1. د عکس اساس باید د نګینکس عکس وي.
  2. د فولډر منځپانګې sa-frontend/build باید د عکس فولډر ته کاپي شي nginx/html.

که تاسو د دې تفصیل څخه فایل ته لاړ شئ Dockerfile، نو دا به داسې ښکاري:

FROM nginx
COPY build /usr/share/nginx/html

لکه څنګه چې تاسو لیدلی شئ، دلته هرڅه خورا ساده دي، او د فایل مینځپانګې حتی د لوستلو وړ او د پوهیدو وړ دي. دا فایل سیسټم ته وايي چې عکس واخلي nginx د هر هغه څه سره چې دمخه یې شتون لري، او د لارښود منځپانګې کاپي کړئ build لارښود ته nginx/html.

دلته تاسو ممکن د دې په اړه پوښتنه ولرئ چې زه څنګه پوهیږم چې تاسو واقعیا د فولډر څخه فایلونو کاپي کولو ته اړتیا لرئ build، دا دی، چې لاره له کوم ځای څخه راغلې ده /usr/share/nginx/html. په حقیقت کې، دلته هیڅ شی پیچلی نه دی. حقیقت دا دی چې اړوند معلومات په کې موندل کیدی شي توضیحات انځور

▍د انځور جوړول او ذخیره ته یې پورته کول

مخکې لدې چې موږ د بشپړ شوي عکس سره کار وکړو ، موږ اړتیا لرو چې دا د عکس ذخیره کولو ته واړوو. د دې کولو لپاره ، موږ به د وړیا کلاوډ عکس کوربه توب پلیټ فارم ډاکر هب وکاروو. د کار په دې مرحله کې تاسو باید لاندې کارونه ترسره کړئ:

  1. لګول ډاکر.
  2. په ډاکر هب ویب پاڼه کې راجستر کړئ.
  3. په ترمینل کې د لاندې کمانډ په چلولو سره خپل حساب ته ننوتل:
    docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD"

اوس تاسو اړتیا لرئ چې لارښود ته لاړشئ ترمینل وکاروئ sa-frontend او هلته لاندې کمانډ چل کړئ:

docker build -f Dockerfile -t $DOCKER_USER_ID/sentiment-analysis-frontend .

دلته او نور په ورته حکمونو کې $DOCKER_USER_ID باید ستاسو د Docker Hub کارن نوم سره بدل شي. د مثال په توګه، د قوماندې دا برخه ښايي داسې ښکاري: rinormaloku/sentiment-analysis-frontend.

په دې حالت کې، دا کمانډ کولی شي له لرې کولو سره لنډ شي -f Dockerfile، ځکه چې دا فایل دمخه په هغه فولډر کې شتون لري چیرې چې موږ دا کمانډ اجرا کوو.

ذخیره ته د بشپړ شوي عکس لیږلو لپاره، موږ لاندې کمانډ ته اړتیا لرو:

docker push $DOCKER_USER_ID/sentiment-analysis-frontend

د دې بشپړولو وروسته ، په ډاکر هب کې ستاسو د ذخیره کولو لیست چیک کړئ ترڅو پوه شئ چې ایا کلاوډ ذخیره ته د عکس اپلوډ بریالی و.

▍د کانتینر چلول

اوس هر څوک کولی شي عکس ډاونلوډ او چل کړي، په نوم پیژندل شوی $DOCKER_USER_ID/sentiment-analysis-frontend. د دې کولو لپاره، تاسو اړتیا لرئ د کمانډونو لاندې ترتیب پرمخ بوځي:

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

اوس کانټینر روان دی، موږ کولی شو د نورو انځورونو په جوړولو سره کار ته دوام ورکړو چې موږ ورته اړتیا لرو. مګر مخکې له دې چې موږ دوام ورکړو، راځئ چې ډیزاین پوه شو 80:80، کوم چې د عکس لانچ کمانډ کې ښکاري او ممکن مغشوش ښکاري.

  • لومړی نمبر 80 - دا د کوربه پورټ شمیره ده (دا ځایی کمپیوټر دی).
  • دوهم نمبر 80 د کانټینر بندر دی چیرې چې غوښتنه باید لیږل کیږي.

لاندې انځور ته پام وکړئ.

د Kubernetes ښوونې برخه 1: غوښتنلیکونه، کوچني خدمتونه، او کانټینرونه
پورټ فارورډنګ

سیسټم د بندر څخه غوښتنې ته لارښوونه کوي <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. د بل څه پورته کول د وخت ضایع کول دي. تاسو کولی شئ د ډاکر په ویلو سره جوړونه ګړندۍ کړئ کوم لارښودونه چې له پامه غورځول کیږي. دا د دې کولو لپاره دی چې موږ فایل ته اړتیا لرو .dockerignore. تاسو، که تاسو د فایل سره آشنا یاست .gitignore، د دې فایل جوړښت به شاید پیژندل شوی وي. دا هغه لارښودونه لیست کوي چې د عکس جوړونې سیسټم یې له پامه غورځولی شي. زموږ په قضیه کې، د دې فایل منځپانګې داسې ښکاري:

node_modules
src
public

د دوتنې .dockerignore باید د فایل په څیر ورته فولډر کې وي Dockerfile. اوس د عکس جوړول به څو ثانیې وخت ونیسي.

راځئ چې اوس د جاوا اپلیکیشن لپاره په عکس کار وکړو.

▍ د جاوا غوښتنلیک لپاره د کانټینر عکس جوړول

تاسو پوهیږئ چې څه، تاسو دمخه هرڅه زده کړل چې تاسو ورته اړتیا لرئ د کانټینر عکسونو جوړولو لپاره پوه شئ. له همدې امله دا برخه به ډیره لنډه وي.

فایل خلاص کړئ Dockerfileکوم چې د پروژې فولډر کې دی sa-webapp. که تاسو د دې فایل متن ولولئ، تاسو به په دې کې یوازې دوه نوي جوړښتونه وګورئ، د کلیمو سره پیل کیږي ENV и EXPOSE:

ENV SA_LOGIC_API_URL http://localhost:5000
…
EXPOSE 8080

کلیدي ENV تاسو ته اجازه درکوي د ډاکر کانټینرونو دننه د چاپیریال تغیرات اعلان کړئ. په ځانګړې توګه، زموږ په قضیه کې، دا تاسو ته اجازه درکوي چې د غوښتنلیک API ته د لاسرسي لپاره یو URL مشخص کړئ چې د متن تحلیل ترسره کوي.

کلیدي EXPOSE تاسو ته اجازه درکوي چې ډاکر ته ووایی چې بندر خلاص کړي. موږ به د غوښتنلیک چلولو پرمهال دا بندر وکاروو. دلته تاسو کولی شئ دا په پام کې ونیسئ Dockerfile د کاریال لپاره SA-Frontend داسې کوم حکم نشته. دا یوازې د اسنادو موخو لپاره دی، په بل عبارت، دا ساختمان د هغه چا لپاره دی چې لوستل یې کوي Dockerfile.

د عکس جوړول او ذخیره کولو ته یې فشار ورکول په تیرو مثال کې ورته ورته ښکاري. که تاسو لاهم په خپلو وړتیاو ډیر باوري نه یاست ، اړونده حکمونه په فایل کې موندل کیدی شي README.md پوښۍ کې sa-webapp.

▍ د Python غوښتنلیک لپاره د کانټینر عکس جوړول

که تاسو د دوتنې منځپانګه وګورئ Dockerfile پوښۍ کې sa-logic، نو تاسو به هلته د ځان لپاره نوي څه ونه مومئ. د عکس جوړولو او ذخیره کولو ته د لیږلو امرونه باید تاسو ته هم دمخه پیژندل شوي وي ، مګر ، زموږ د نورو غوښتنلیکونو په څیر ، دوی په فایل کې موندل کیدی شي. README.md پوښۍ کې sa-logic.

▍ د کانټینر شوي غوښتنلیکونو ازموینه

ایا تاسو په هغه څه باور کولی شئ چې تاسو یې ندي ازمول شوي؟ زه هم نشم کولای. راځئ چې زموږ کانتینرونه معاینه کړو.

  1. راځئ چې د غوښتنلیک کانټینر پیل کړو sa-logic او په بندر کې د اوریدلو لپاره یې تنظیم کړئ 5050:
    docker run -d -p 5050:5000 $DOCKER_USER_ID/sentiment-analysis-logic
  2. راځئ چې د غوښتنلیک کانټینر پیل کړو sa-webapp او په بندر کې د اوریدلو لپاره یې تنظیم کړئ 8080. سربیره پردې ، موږ اړتیا لرو هغه بندر تنظیم کړو په کوم کې چې د پیتون غوښتنلیک به د چاپیریال متغیر له سره په ټاکلو سره د جاوا غوښتنلیک څخه غوښتنې واوري. SA_LOGIC_API_URL:
    $ docker run -d -p 8080:8080 -e SA_LOGIC_API_URL='http://<container_ip or docker machine ip>:5000' $DOCKER_USER_ID/sentiment-analysis-web-app

د ډاکر کانټینر یا مجازی ماشین IP پته موندلو څرنګوالي زده کولو لپاره ، فایل ته مراجعه وکړئ README.

راځئ چې د غوښتنلیک کانټینر پیل کړو sa-frontend:

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

اوس هرڅه چمتو دي چې په براوزر کې پتې ته لاړ شي localhost:80 او غوښتنلیک هڅه وکړئ.

مهرباني وکړئ په یاد ولرئ که تاسو د دې لپاره بندر بدل کړی sa-webapp، یا که تاسو د ډاکر مجازی ماشین پرمخ وړئ ، نو تاسو به اړتیا ولرئ فایل سم کړئ App.js له فولډر څخه sa-frontendپه میتود کې د IP پته یا پورټ شمیره بدلولو سره analyzeSentence()د پخوانیو معلوماتو پر ځای د اوسني معلوماتو ځای په ځای کول. له دې وروسته ، تاسو اړتیا لرئ عکس له سره راټول کړئ او وکاروئ.

دا هغه څه دي چې زموږ د غوښتنلیک ډیاګرام اوس ښکاري.

د Kubernetes ښوونې برخه 1: غوښتنلیکونه، کوچني خدمتونه، او کانټینرونه
کوچني خدمتونه په کانتینرونو کې پرمخ ځي

لنډیز: ولې موږ د Kubernetes کلستر ته اړتیا لرو؟

موږ یوازې فایلونه معاینه کړي Dockerfile، د عکسونو جوړولو څرنګوالي په اړه یې خبرې وکړې او د ډاکر ذخیره ته یې فشار ورکړ. سربیره پردې ، موږ زده کړل چې څنګه د فایل په کارولو سره د عکس مجلس ګړندی کړو .dockerignore. د پایلې په توګه، زموږ مایکرو خدمتونه اوس په ډاکر کانټینرونو کې پرمخ ځي. دلته تاسو ممکن په بشپړ ډول توجیه شوي پوښتنه ولرئ چې ولې موږ کوبرنیټس ته اړتیا لرو. د دې موادو دویمه برخه به د دې پوښتنې ځواب لپاره وقف شي. په ورته وخت کې، لاندې پوښتنې ته پام وکړئ:
راځئ فرض کړو چې د متن تحلیل لپاره زموږ ویب غوښتنلیک په ټوله نړۍ کې مشهور شوی. په ملیونونو غوښتنې ورته هره دقیقه راځي. دا پدې مانا ده چې کوچني خدمتونه sa-webapp и sa-logic د لوی بار لاندې به وي. د کانټینرونو اندازه کول څنګه د مایکرو خدماتو چلول؟

د Kubernetes ښوونې برخه 1: غوښتنلیکونه، کوچني خدمتونه، او کانټینرونه

سرچینه: www.habr.com

Add a comment