Docker Compose, lai konteineros ievietotu MEAN kaudzes lietojumprogrammu



Docker Compose ir rīks vairāku konteineru definēšanai un palaišanai, lai Docker palaistu sarežģītas lietojumprogrammas, piemēram, konteinerizētu MEAN lietojumprogrammu.

Iepriekšējos Docker emuāros jūs būtu lasījis par to, kas ir Docker attēli, Docker konteineri un kāda ir to nepieciešamība. Ja jūs par tiem neesat lasījis, tad es lūdzu jūs izlasīt , pirms turpināt ar šo emuāru vietnē Docker Compose.

Pēc tam, kad ir izpētītas iespējas, kas paveras kopā ar Docker, noteikti ir ļoti aizraujoši uzzināt vairāk. Vai ne? Vismaz es biju, kad pakļāvos izaicinājumam.





Ievads Docker Compose

Man bija viegli ievietot vienu pakalpojumu lietojumprogrammu. Bet, kad man bija jākontrolē vairāki pakalpojumi atsevišķos konteineros, es uzskrēju uz ceļa bloķēšanas. Mana prasība bija konteineru ievietošana un mitināšanas programma MEAN stack.

Jā, jūs to izlasījāt pareizi. Pilna kaudzes lietojumprogramma. Sākotnēji es domāju, ka tas nav iespējams. Bet pēc tam, kad dzirdēju par Docker Compose, es zināju, ka visas manas problēmas tiks atrisinātas.



Docker Compose var izmantot, lai izveidotu atsevišķus konteinerus (un tos izvietotu) katram no MEAN kaudzes lietojumprogrammas skursteņiem. MEAN ir MongoDB Express Angular & NodeJ saīsinājums. Demo, kuru es rādīšu šajā emuārā, ir arī par šo pašu tēmu.

Izmantojot Docker Compose, mēs varam izvietot katru no šīm tehnoloģijām atsevišķos konteineros tajā pašā resursdatorā un panākt, lai viņi sazinātos savā starpā. Katrs konteiners parādīs portu saziņai ar citiem konteineriem.

Šo konteineru sakarus un darbības laiku uztur Docker Compose.



Tātad jūs varat jautāt, kā iestatīt visu šo infrastruktūru? Tad ļaujiet man sniegt jums detalizētāku paskaidrojumu.

Dockerfile

Līdzīgi tam, kā mēs vērpjam jebkuru vienas lietojumprogrammas konteineru, rakstot dockerfile, mums būs jāraksta atsevišķs dockerfile katras vienas tvertnes lietojumprogrammu izveidošanai. Turklāt mums būs jāuzraksta arī Docker Compose File, kas veiks faktisko darbu. Docker Compose File izpildīs dažādus dockerfiles, lai izveidotu dažādus konteinerus un ļautu tiem mijiedarboties savā starpā.

Mūsu gadījumā mums ir pilna kaudzes lietojumprogramma, kas sastāv no MongoDB, ExpressJS, Angular un NodeJS. MongoDB rūpējas par aizmugures datu bāzi, NodeJS un ExpressJS ir paredzētas servera puses renderēšanai, bet Angular - priekšējam galam.

Nozīmē kaudzes lietotni Docker Compose - Edureka

Tā kā ir trīs komponenti, mums katrai sastāvdaļai ir jāizgriež konteineri. Tvertnes mums jāapgriež šādi:

  1. 1. konteiners - leņķa
  2. 2. konteiners - NodeJS un ExpressJS
  3. 3. konteiners - MongoDB

Docker konteineru izveide

Kā pirmo soli vidējās lietojumprogrammas dokerēšanai uzrakstīsim dockerfailu katra komponenta izveidei, sākot no Angular’s ​​konteinera. Šim docker failam būs jāatrodas projekta direktorijā kopā ar failu ‘package.json’. ‘Package.json’ satur informāciju par to, kura atkarību versija ir jāizmanto ‘NPM’, lai izveidotu leņķisko lietojumprogrammu.

1. Dockerfile priekšējam galam

FROM mezgls: 6 RUN mkdir -p / usr / src / app WORKDIR / usr / src / app COPY package.json / usr / src / app RUN npm kešatmiņa tīra RUN npm install COPY. / usr / src / app EXPOSE 4200 CMD ['npm', 'start']

Kā vienmēr, mūsu pirmā komanda ir vilkt bāzes attēlu, un mēs velkam bāzes ‘mezgls: 6’ attēlu.

Nākamās divas komandas ir par jauna direktorija ‘/ usr / src / app’ izveidi Docker konteinerā leņķisko kodu glabāšanai un padarīšanu par darba direktoriju konteinerā.

Pēc tam mēs kopējam failu “package.json” no mūsu projekta direktorija uz konteinera iekšpusi.

Pēc tam mēs izpildām komandu “npm cache clean”, kas notīra npm kešatmiņu.

Pēc tam mēs izpildām komandu “npm install”, kas sāk lejupielādēt katla plāksnes, kas nepieciešamas lietotnes Angular mitināšanai. Tiek sākta katlu plākšņu lejupielāde, pamatojoties uz ‘package.json’ norādīto atkarību versijām.

Nākamais komandu izpildījums “RUN” ir visu kodu un mapju, kas atrodas no projekta direktorija, kopēšana konteinera iekšpusē.

Iepriekš minētā komanda prasa konteineram atklāt porta numuru 4200 saziņai ar aizmugures serveri, lai nosūtītu pieprasījumus, ko lietotāji veikuši, piekļūstot priekšgala klientam, izmantojot tīmekļa lietotāja interfeisu.

Visbeidzot, pēdējā komanda ir ‘RUN’, lai sāktu ‘npm’. Tas sāk izpildīt mūsu Angular lietotnes izveides kodus.

Lietotne Angular tagad ir gatava, taču tā netiks mitināta pareizi, jo tā ir atkarīga no aizmugures servera un datu bāzes. Tātad ejam tālāk un uzrakstām dockerfile aizmugures servera konteinerizēšanai.

2. Dockerfile aizmugurē

Pat šī dockerfile būs atrodama projekta direktorijā. Šajā direktorijā būs arī fails “package.json”, lai noteiktu Express servera atkarības un citas NodeJS prasības. Bet pats galvenais, tas satur projekta kodu aizmugures servera atbalstam.

FROM mezgls: 6 RUN mkdir -p / usr / src / app WORKDIR / usr / src / app COPY package.json / usr / src / app RUN npm kešatmiņa tīra RUN npm install COPY. / usr / src / app EXPOSE 3000 CMD ['npm', 'start']

Kā redzat, starp abiem docker failiem ir daudz līdzību. Mēs izmantojam to pašu ‘node: 6’ kā bāzes attēla slāni, konteinerā izveidojam jaunu direktoriju, padarām to par darba direktoriju un palaižam komandu ‘npm install’. Bet vienīgā atšķirība ir porta numurs, kas pakļauts saziņai. Šajā gadījumā tiek noteikts porta numurs 3000. Šeit serveris tiks mitināts un meklēs klienta pieprasījumus.

3. Datu bāze

Jums varētu rasties jautājums, kāpēc es virsrakstā neesmu minējis “dockerfile For Database”. Iemesls ir tāds, ka mums faktiski nav nepieciešams veikt pielāgojumus. Mēs varam uzreiz izvilkt ‘MongoDB’ bāzes attēlu savu datu glabāšanai un vienkārši atmaskot porta numuru, kurā tam var piekļūt.

Tagad jūsu prātā būtu jautājums, kur es to darītu? Mēs to varam izdarīt Docker Compose File.

Docker komponēšanas fails

Docker Compose File ir YAML fails, kas satur detalizētu informāciju par pakalpojumiem, tīkliem un apjomiem Docker lietojumprogrammas iestatīšanai.

Palaidiet zemāk esošo komandu, lai atrastu Docker Engine versiju.

kas ir apakšvirkne java
dokeris -v

Izpildot komandu, tiks atgriezta versija, kas darbojas jūsu resursdatorā. Pamatojoties uz Docker Engine versiju jūsu resursdatorā, lejupielādējiet atbilstošo Docker Compose versiju. Jūs varat meklēt atbilstošo lejupielādējamo versiju no Dokera oficiālā dokumentācija .

Tā kā es vadu Docker Engine versiju 17.05.0-ce, esmu izmantojis Docker Compose 3. versiju.

Instalējiet Docker Compose

Lai lejupielādētu rakstīšanu, palaidiet tālāk norādīto komandu kopu.

sudo čokurošanās -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o / usr / local / bin / docker- sastādīt sudo chmod + x / usr / local / bin / docker-compose

Ņemiet vērā, ka komandas versijas numurs mainīsies, pamatojoties uz jūsu palaisto Docker Engine versiju.

Tālāk ir norādītas komandas, kas ir daļa no mana Docker Compose File.

versija: '3.0' # norādiet docker-compose versiju # Definējiet palaistos pakalpojumus / konteinerus: angular: # pirmās pakalpojuma versijas nosaukums: angular-app # norādiet Dockerfile portu direktoriju: - '4200: 4200' # norādīt porta kartēšanas ekspresu: # otrās pakalpojuma izveides nosaukums: ekspress-serveris # norādiet Dockerfile portu direktoriju: - '3000: 3000' # norādiet portu kartēšanas saites: - datu bāze # saista šo pakalpojumu ar datu bāzes pakalpojumu datu bāzi: # trešā pakalpojuma attēla nosaukums: mongo # norādiet attēlu konteinera izveidei no ostām: - '27017: 27017' # norādiet porta pārsūtīšanu

Esmu diezgan pārliecināts, ka iepriekšminētajā failā esošajām komandām jums nav jēgas. Tātad, atrisināsim šo problēmu.

Pirmajā koda rindiņā esmu definējis izmantojamās Docker Compose versiju. Šis ir ļoti svarīgs solis, ja vēlaties, lai Kompozīcija darbotos pareizi, neizmetot nekādas kļūdas. Noteikti lejupielādējiet Docker Compose versiju atbilstoši jūsu Docker Engine versijai.

Pēc tam es definēju trīs konteinerus, izmantojot atslēgvārdu “pakalpojumi”. Šie pakalpojumi attiecas uz trim manas kaudzes, priekšgala, aizmugures un datu bāzes sastāvdaļām. Tātad šajā gadījumā manu konteineru nosaukums būs manu pakalpojumu nosaukums, t.i., “leņķiskais”, “ekspress” un “datu bāze”.

Atslēgvārds ‘būvēt’ tiek izmantots, lai norādītu, ka šī konteinera vērpšanai paredzētais dockerfails atrodas šajā direktorijā. Pagaidiet, vai jūs sajaukt kā?

Tas ir vienkārši. Ceļš ir jānorāda pēc ‘build:’. Mūsu gadījumā ‘angular-app’ un ‘express-server’ ir ceļi uz diviem direktorijiem, kurus var sasniegt no direktorija, kurā atrodas Docker Compose File. Mūsu datu bāzes konteineram es vienkārši teicu, ka dockerfile ceļa vietā izmantojiet bāzes attēlu: mongo.

mysql_fetch_array

Katram no šiem pakalpojumiem esmu norādījis arī porta numurus, kurus var izmantot, lai saņemtu / nosūtītu pieprasījumus no citiem konteineriem (pakalpojumiem). 4200 leņķa gadījumā, 3000 ekspress gadījumā un 27017 mongo gadījumā.

Ekspress konteineram ir arī saite: uz datu bāzes konteineru, norādot, ka visi servera pusē saņemtie dati tiks nosūtīti uz datu bāzi, kurā tie tiks glabāti.

Visbeidzot, mēs esam nonākuši pie Compose iestatīšanas beigām. Lai sāktu Docker Compose un grieztu trīs konteinerus ar trim pakalpojumiem, mums vienkārši jāizpilda zemāk redzamās divas komandas no direktorija, kurā atrodas Docker Compose File (YAML fails):

docker-compose veidot docker-compose up

Komandu “docker-compose build” izmanto, lai izveidotu / atjaunotu pakalpojumus, savukārt komandu “docker-compose up” izmanto, lai izveidotu / palaistu konteinerus. Uz priekšu! Izmēģiniet pats.

Zemāk ir redzami Docker attēlu ekrānšāviņi, kas tiek veidoti un pēc tam izpildīti. Jūs varat pamanīt, ka tiek veidots leņķiskais attēls un pēc tam marķēts ar nosaukumu “leņķiskais: jaunākais”.

Arī Express Express attēls ir veidots ar nosaukumu un tagu kā “express: latest”.

Tagad, kad attēls ir izveidots, mēģināsim to palaist un tādējādi procesā vērpt konteineru. Zemāk ir šis ekrānuzņēmums.

Zemāk ir ekrānuzņēmums, kurā teikts “webpack: veiksmīgi sastādīts”, kas nozīmē, ka Docker veiksmīgi konteinerā ievieto trīs pakalpojumus.

Tagad, kad konteineri ir mitināti, varat redzēt, kā attiecīgajos portos aktīvi darbojas pakalpojumi. Iet ierakstiet šādus porta numurus savā tīmekļa pārlūkprogrammā, lai mijiedarbotos ar lietotnes MEAN GUI.

vietējais saimnieks: 4200 - Leņķiskā lietotne (priekšējā daļa)
vietējais saimnieks: 3000 - Express Server & NodeJS (aizmugure / servera puse)
vietējais saimnieks: 27017 - MongoDB (datu bāze)

Vēl iespaidu? Pagaidiet, jo Dokers vēl nav pabeigts! Mēs varam izmantot komandu “docker-compose scale =’ x ’”, lai ērti palielinātu / samazinātu izvietojumu skaitu. Citiem vārdiem sakot, mēs varam izveidot tik daudz pakalpojumu konteineru. Tālāk ir sniegta pilnīga komanda, lai noteiktu pakalpojumu pielāgotu “5” konteineriem:

dokstacijas sastādīšanas skala = 5

Pakalpojumu palielināšana tik viegli, iepakošana un konteineru ievietošana tik rentablā veidā ir tas, kas padara Docker par vienu no labākajiem izvietošanas rīkiem un par manu personīgo iecienītāko.

Ja jums joprojām ir šaubas par šo koncepciju, varat noskatīties zemāk redzamo videoklipu, kur es to pašu jēdzienu esmu izskaidrojis ar praktisku rokasgrāmatu par to, kā iestatīt Docker Compose.

Dokera sacerēšana | Konteinerizācija MEAN Stack Application | DevOps apmācība

Tagad, kad esat uzzinājis par Docker, pārbaudiet Autors: Edureka, uzticams tiešsaistes mācību uzņēmums ar vairāk nekā 250 000 apmierinātu izglītojamo tīklu visā pasaulē. Šis Edureka Docker sertifikācijas apmācības kurss palīdz izglītojamajiem iegūt zināšanas Docker ieviešanā un apguvē.

Vai mums ir jautājums? Lūdzu, pieminējiet to komentāru sadaļā, un mēs ar jums sazināsimies.