Docker Compose MEAN-i virna rakenduse mahutamiseks

Docker Compose on tööriist mitme konteineri määratlemiseks ja käitamiseks Dockeris keeruliste rakenduste käitamiseks, näiteks MEAN-rakenduse konteinerisse paigutamiseks.

Eelmistest Dockeri ajaveebidest oleksite lugenud, mis on Dockeri pildid, Dockeri konteinerid ja mis on nende vajadus. Kui te pole nende kohta lugenud, palun teil lugeda , enne kui jätkate selle ajaveebiga Docker Compose'is.

Pärast Dockeriga kaasnevate võimaluste uurimist on kindlasti väga põnev rohkem teada saada. Kas pole? Vähemalt olin mina, kui komistasin väljakutsesse.





Docker Compose'i sissejuhatus

Ühe teenuserakenduse mahutamine oli minu jaoks lihtne. Aga kui pidin mitu teenust konteineritesse paigutama, sattusin teetõkke otsa. Minu nõue oli konteinerisse paigutada ja majutada MEAN-i virna rakendus.

Jah, sa lugesid seda õigesti. Täisrakenduse rakendus. Esialgu arvasin, et see pole võimalik. Kuid pärast seda, kui kuulsin Docker Compose'ist, teadsin, et kõik mu probleemid saavad lahendatud.



Docker Compose'i abil saab MEAN-i virnarakenduses igale virnale eraldi konteinerid luua (ja neid majutada). MEAN on lühend MongoDB Express Angular & NodeJs. Samal teemal on ka demo, mida siin blogis näitan.

Docker Compose'i abil saame kõiki neid tehnoloogiaid hostida eraldi hostides eraldi konteinerites ja panna nad omavahel suhtlema. Iga konteiner paljastab sadama teiste konteineritega suhtlemiseks.

Nende mahutite sidet ja ajakava haldab Docker Compose.



Nii et võite küsida, kuidas kogu seda infrastruktuuri seadistada? Noh, las ma annan teile üksikasjalikuma selgituse.

Dockerfile

Sarnaselt sellele, kuidas me keerutame üksikut rakendust sisaldavat konteinerit, kirjutades dockerfile, peame iga ühekonteinerilise rakenduse loomiseks kirjutama eraldi dockerfile. Lisaks peame kirjutama ka Dockeri kirjutusfaili, mis teeb tegeliku töö. Dockeri koostamisfail käivitab erinevad dockerfailid, et luua erinevad konteinerid ja lasta neil omavahel suhelda.

parim java ide algajatele

Meie puhul on meil täiskogurakendus, mis sisaldab MongoDB, ExpressJS, Angular ja NodeJS. MongoDB hoolitseb tagaosa andmebaasi eest, NodeJS ja ExpressJS on serveripoolse renderdamise jaoks ja Angular on esiotsa jaoks.

MEAN Stack App - Docker Compose - Edureka

Kuna seal on kolm komponenti, peame kummagi komponendi jaoks konteinerid keerutama. Peame konteinereid keerutama järgmiselt:

  1. Konteiner 1 - nurgeline
  2. Konteiner 2 - NodeJS ja ExpressJS
  3. Konteiner 3 - MongoDB

Dockeri konteinerite loomine

Esimese sammuna keskmise rakenduse dokkimises kirjutame iga komponendi ehitamiseks dockerfile, alustades Angulari konteinerist. See dockerfail peab asuma projekti kataloogis koos failiga ‘package.json’. Pakett.json sisaldab üksikasju selle kohta, millist sõltuvuste versiooni peab NPM nurgarakenduse loomiseks kasutama.

1. Dockerfile esiotsa jaoks

FROM sõlmest: 6 RUN mkdir -p / usr / src / app WORKDIR / usr / src / app COPY package.json / usr / src / app RUN npm vahemälu puhas RUN npm install COPY. / usr / src / app EXPOSE 4200 CMD ['npm', 'start']

Nagu alati, on meie esimene käsk tõmmata baaskujutis ja me tõmbame põhipilti ‘sõlm: 6’.

Järgmised kaks käsku käsitlevad uue kausta ‘/ usr / src / app’ loomist Dockeri konteineris nurkkoodide salvestamiseks ja selle muutmiseks konteineris olevaks töökataloogiks.

Seejärel kopeerime faili 'package.json' oma projektide kataloogist konteinerisse.

Seejärel käivitame käsu ‘npm cache clean’, mis puhastab npm vahemälu.

Seejärel käivitame käsu npm install, mis hakkab rakenduse Angular majutamiseks vajalikke katlaplaate alla laadima. See hakkab katlaplaate alla laadima jaotises ‘package.json’ määratud sõltuvuste versioonide põhjal.

Järgmine käsk RUN on kopeerida kõik projektikataloogis olevad koodid ja kaustad konteinerisse.

Ülaltoodud käsk palub konteineril paljastada pordi number 4200 tagasiserveriga suhtlemiseks, et saata kasutajaliidese veebiliidese kaudu kasutajaliidese kaudu taotlusi.

Viimane käsk on käsk ‘RUN’, et käivitada npm. See hakkab rakendama meie nurgarakenduse loomise koode.

Rakendus Angular on nüüd valmis, kuid seda ei hostita õigesti, kuna see sõltub tagalaserverist ja andmebaasist. Nii et lähme kaugemale ja kirjutame dockerfile tagumises serveris konteinerite jaoks.

2. Dockerfile tagumise otsa jaoks

Isegi see dockerfail on olemas projekti kataloogis. See kataloog sisaldab ka faili 'package.json', et määratleda ekspressi serveri sõltuvused ja muud NodeJS-i nõuded. Kuid mis kõige tähtsam, see sisaldab projekti koodi, mis toetab tagasiserverit.

FROM sõlmest: 6 RUN mkdir -p / usr / src / app WORKDIR / usr / src / app COPY package.json / usr / src / app RUN npm vahemälu puhas RUN npm install COPY. / usr / src / app EXPOSE 3000 CMD ['npm', 'start']

Nagu näete, on kahe dockerfaili vahel palju sarnasusi. Kasutame põhipildikihina sama ‘node: 6’, loome konteinerisse uue kataloogi, muudame selle töökataloogiks ja käivitame muu hulgas käsu ‘npm install’. Kuid ainus erinevus on side jaoks avatud pordi number. Sel juhul on määratletud pordi number 3000. Siin hostitakse serverit ja see otsib kliendilt päringuid.

3. Andmebaas

Teil võib tekkida küsimus, miks ma pole pealkirjas maininud nime „dockerfile For Database”. Põhjus on see, et meil pole tegelikult vajadust kohandamise järele. Saame oma andmete salvestamiseks kohe tõmmata ‘MongoDB’ baaspildi ja lihtsalt paljastada pordi numbri, millel sellele juurde pääseb.

Nüüd oleks teie meelest küsimus, kus ma seda teeksin? Noh, me saame seda teha Dockeri kirjutusfailis.

Dockeri kirjutusfail

Dockeri koostefail on YAML-fail, mis sisaldab üksikasju rakenduse Docker seadistamise teenuste, võrkude ja mahtude kohta.

Dockeri mootori versiooni leidmiseks käivitage järgmine käsk.

dokkija -v

Käsu täitmisel tagastatakse teie hostis töötav versioon. Teie hostis asuva Docker Engine'i versiooni põhjal laadige alla sobiv versioon Docker Compose. Võite otsida allalaadimiseks sobivat versiooni Dockeri ametlik dokumentatsioon .

Kuna ma töötan Docker Engine'i versiooniga 17.05.0-ce, olen kasutanud Docker Compose'i versiooni 3.

Installige Docker Compose

Koostamise allalaadimiseks käivitage järgmine käskude komplekt.

sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s` -unime -m` -o / usr / local / bin / docker- sudo sudo chmod + x / usr / local / bin / docker-compose

Pange tähele, et käsu versiooninumber muutub teie käivitatava Docker Engine'i versiooni põhjal.

Allpool on käsud, mis on osa minu Dockeri koostamisfailist.

versioon: '3.0' # määrake docker-compose versioon # Määrake käivitatavad teenused / konteinerid: nurk: # esimese teenuse järgu nimi: nurk-rakendus # määrake Dockerfile'i pordide kataloog: - '4200: 4200' # täpsustage porti kaardistamise ekspress: # teise teenuse järgu nimi: ekspress-server # määrake Dockerfile'i porti kataloog: - '3000: 3000' # täpsustage portide kaardistamise lingid: - andmebaas # linkige see teenus andmebaasiteenuse andmebaasiga: # kolmanda teenusepildi nimi: mongo # määrake pilt konteinerite loomiseks portidest: - '27017: 27017' # täpsustage pordi edastamine

Olen üsna kindel, et ülaltoodud failis olevatel käskudel pole teile mõtet. Nii et lahendame selle probleemi.

Esimeses koodireas olen määranud kasutatava Docker Compose'i versiooni. See on väga oluline samm, kui soovite, et Compose toimiks korralikult ilma ühtegi viga viskamata. Laadige Docker Compose'i versioon kindlasti alla vastavalt oma Docker Engine'i versioonile.

Pärast seda määratlesin märksõnaga ‘teenused’ kolm konteinerit. Need teenused viitavad minu korstna kolmele komponendile, esiosale, tagumisele otsele ja andmebaasile. Nii et sel juhul on minu konteinerite nimeks minu teenuste nimed, st 'nurgeline', 'ekspress' ja 'andmebaas'.

Märksõna ‘build’ kasutatakse näitamaks, et selle konteineri keerutamiseks mõeldud dockerfail on selles kataloogis. Oota, kas sa oled segaduses kuidas?

See on lihtne. Tee tuleb täpsustada pärast ‘build:’. Meie puhul on nurgarakendus ja ekspress-server tee kahele kataloogile, kuhu pääseb kataloogist, kus asub Dockeri kirjutusfail. Meie andmebaasikonteineri jaoks olen lihtsalt öelnud, et kasutage dockerfile'i tee asemel baasi 'image: mongo'.

kuidas käitada php-d Windows 10-s

Kõigi nende teenuste jaoks olen määranud ka pordinumbrid, mida saab kasutada teistelt konteineritelt (teenustest) päringute vastuvõtmiseks / saatmiseks. Nurga korral 4200, ekspressil 3000 ja mongo puhul 27017.

Lisaks on ekspressmahutil andmebaasi konteineriga link: link, mis näitab, et kõik serveri poolel olevad andmed saadetakse andmebaasi, kuhu need salvestatakse.

Nüüd oleme lõpuks kirjutamise loomise lõpusirgel. Dockeri komponeerimise käivitamiseks ja kolme konteineri keerutamiseks kolme teenusega peame lihtsalt käivitama kaks alltoodud käsku kataloogist, kus asub Dockeri kirjutusfail (YAML-fail):

docker-komponeerima build docker-komponeerima

„Docker-compose build” -käsu kasutatakse teenuste ehitamiseks / ümberehitamiseks, käsku „docker-compose up” aga kasutatakse konteinerite loomiseks / käivitamiseks. Lase käia! Proovige ise.

Allpool on ekraanipildid Dockeri piltide ehitamisest ja seejärel käivitamisest. Võite märgata, et nurkkujutist ehitatakse ja seejärel sildistatakse nimega „nurk: viimane“.

Samuti on Expressi jaoks loodud pilt, mille nimi ja silt on „express: latest”.

Nüüd, kui pilt on üles ehitatud, proovime seda käivitada ja protsessi käigus konteinerit keerutada. Allpool on see ekraanipilt.

Allpool on ekraanipilt, mis ütleb „veebipakk: kompileeritud edukalt”, mis tähendab, et Docker konteineris edukalt kolme teenust.

Nüüd, kui konteinerid on majutatud, näete nende vastavas sadamas aktiivseid teenuseid. Tippige oma veebibrauseris järgmised pordinumbrid, et suhelda rakenduse MEAN GUI-ga.

kohalik host: 4200 - Nurga rakendus (esiosa)
kohalik host: 3000 - Express Server & NodeJS (tagumine osa / serveri pool)
kohalik host: 27017 - MongoDB (andmebaas)

Muljet veel? Oota, sest Docker pole veel valmis! Kasutame käsku „docker-compose scale =’ x ’“, et hõlpsasti juurutamise arvu üles / alla suurendada. Teisisõnu võime teenuse jaoks luua nii palju konteinereid. Allpool on täielik käsk konkreetse teenuse viieks konteineriks skaleerimiseks:

dokk-komponeerimise skaala = 5

Teenuste nii hõlpsaks muutmine, pakkimine ja mahutamine nii tasuval viisil on see, mis muudab Dockeri üheks parimaks juurutamisvahendiks ja minu isiklikuks lemmikuks.

Kui teil on selle kontseptsiooni suhtes endiselt kahtlusi, võite vaadata allolevat videot, kus ma selgitasin sama kontseptsiooni praktilise praktikaga, kuidas Docker Compose'i seadistada.

Dokkeri kirjutamine | Konteinerites MEAN Stack Application | DevOpsi õpetus

Nüüd, kui olete Dockeri kohta teada saanud, vaadake järgmist Edureka, usaldusväärne veebiõppeettevõte, mille võrgustik hõlmab üle 250 000 rahuloleva õppija, levinud üle kogu maailma. See Edureka Dockeri sertifitseerimiskoolitus aitab õppijatel omandada teadmisi Dockeri juurutamise ja selle valdamise kohta.

Kas teil on meile küsimus? Palun mainige seda kommentaaride jaotises ja võtame teiega ühendust.