Docker Compose MEAN-pino-sovelluksen säilyttämiseen



Docker Compose on työkalu useiden säilöjen määrittelemiseen ja suorittamiseen monimutkaisten sovellusten ajamiseksi Dockerissa, esimerkiksi MEAN-sovelluksen säilyttämiseen.

Aikaisemmissa Docker-blogeissa olisit lukenut, mitä ovat Docker-kuvat, Docker-kontit ja mikä on niiden tarve. Jos et ole lukenut niistä, pyydän sinua lukemaan , ennen kuin jatkat tämän blogin käyttämistä Docker Compose -sivustossa.

Kun olet tutustunut Dockerin tarjoamiin mahdollisuuksiin, on varmasti erittäin jännittävää oppia lisää. Eikö olekin? Ainakin, kun törmäsin haasteeseen.





Johdanto Docker Compose -sovellukseen

Yhden palvelusovelluksen säilyttäminen oli minulle helppoa. Mutta kun jouduin kontoimaan useita palveluja erillisiin kontteihin, törmäsin tiesulkuun. Vaatimukseni oli säilyttää ja isännöidä MEAN-pino-sovellus.

Yup, luit sen oikein. Täysi pino-sovellus. Aluksi ajattelin, että se ei ollut mahdollista. Mutta kun kuulin Docker Composesta, tiesin, että kaikki ongelmani ratkaistaan.



Docker Compose -sovelluksella voidaan luoda erillisiä kontteja (ja isännöidä niitä) jokaiselle pinolle MEAN-pino-sovelluksessa. MEAN on lyhenne sanoista MongoDB Express Angular & NodeJs. Demo, jonka näytän tässä blogissa, on myös samasta aiheesta.

Käyttämällä Docker Compose -ohjelmaa voimme isännöidä jokaista näistä tekniikoista erillisissä säiliöissä samalla isännällä ja saada ne kommunikoimaan keskenään. Jokainen kontti paljastaa portin yhteydenpitoon muiden konttien kanssa.

Näiden konttien viestintää ja käyttöaikaa ylläpitää Docker Compose.



Joten saatat kysyä, miten koko tämä infrastruktuuri asetetaan? No, anna minun antaa sinulle tarkempi selitys.

Docker-tiedosto

Samoin kuin pyörimme mitä tahansa yhden sovelluksen säiliötä kirjoittamalla docker-tiedoston, meidän on kirjoitettava erillinen docker-tiedosto kunkin yhden säiliön sovellusten rakentamista varten. Lisäksi meidän on kirjoitettava myös Docker Compose File, joka tekee varsinaisen työn. Docker Compose File suorittaa eri docker-tiedostot luodakseen erilaiset säilöt ja antaakseen niiden olla vuorovaikutuksessa toistensa kanssa.

Meidän tapauksessamme meillä on täysi pino-sovellus, joka koostuu MongoDB: stä, ExpressJS: stä, Angularista ja NodeJS: stä. MongoDB huolehtii taustapäätietokannasta, NodeJS ja ExpressJS ovat palvelinpuolen renderointia varten ja Angular etupäätä varten.

MEAN Stack -sovellus - Docker Compose - Edureka

Koska komponentteja on kolme, meidän on kehrättävä säiliöitä kullekin komponentille. Säiliöitä on kehrättävä seuraavalla tavalla:

  1. Kontti 1 - kulmikas
  2. Kontti 2 - NodeJS ja ExpressJS
  3. Kontti 3 - MongoDB

Docker-konttien luominen

Ensimmäisenä askeleena keskimääräisen sovelluksen telakointiin kirjoitetaan docker-tiedosto kunkin komponentin rakentamiseksi alkaen Angularin kontista. Tämän docker-tiedoston on oltava projektihakemistossa 'package.json' -tiedoston mukana. ”Package.json” sisältää tiedot siitä, mitä versioita riippuvuuksista NPM: n on käytettävä kulmasovelluksen rakentamiseen.

1. Docker-tiedosto käyttöliittymää varten

FROM solmusta: 6 RUN mkdir -p / usr / src / app WORKDIR / usr / src / app COPY package.json / usr / src / app RUN npm välimuisti puhdas RUN npm install COPY. / usr / src / app EXPOSE 4200 CMD ['npm', 'start']

Kuten aina, ensimmäinen komento on vetää peruskuva ja vedämme peruskuva 'solmu: 6'.

Seuraavat kaksi komentoa koskevat uuden hakemiston '/ usr / src / app' luomista Docker Container -sovelluksen sisään kulmakoodien tallentamista varten ja tämän tekemisen työhakemistoksi Containerissa.

Kopioimme sitten ”package.json” -tiedoston projektihakemistostamme säilön sisälle.

Suoritamme sitten npm-välimuisti puhdas -komennon, joka puhdistaa npm-välimuistin.

Sen jälkeen suoritamme npm install -komennon, joka alkaa ladata Angular-sovelluksen isännöimiseksi tarvittavia kattilalevyjä. Se alkaa ladata kattilalevyt versiossa ”package.json” määriteltyjen riippuvuuksien perusteella.

Seuraava ”RUN” -komentoajo on kopioida kaikki projektihakemistossa olevat koodit ja kansiot säilön sisälle.

Yllä oleva komento pyytää säiliötä paljastamaan porttinumeron 4200 yhteydenpitoa varten loppupalvelimen kanssa lähettämään pyyntöjä, jotka käyttäjät ovat tehneet käyttöliittymästä web-käyttöliittymän kautta.

Viimeinen komento on 'RUN' -komento aloittaa npm. Tämä alkaa suorittaa koodit Angular-sovelluksemme rakentamiseksi.

Angular-sovellus on nyt valmis, mutta sitä ei isännöidä kunnolla, koska se on riippuvainen taustapalvelimesta ja tietokannasta. Joten mennään pidemmälle ja kirjoitetaan docker-tiedosto takapalvelimen säilyttämistä varten.

2. Docker-tiedosto takapäätä varten

Jopa tämä docker-tiedosto on läsnä projektihakemistossa. Tämä hakemisto sisältää myös ‘package.json’ -tiedoston Express-palvelimen riippuvuuksien ja muiden NodeJS-vaatimusten määrittelemiseksi. Mutta mikä tärkeintä, se sisältää projektikoodin, joka tukee taustapalvelinta.

FROM solmusta: 6 RUN mkdir -p / usr / src / app WORKDIR / usr / src / app COPY package.json / usr / src / app RUN npm välimuisti puhdas RUN npm install COPY. / usr / src / app EXPOSE 3000 CMD ['npm', 'start']

Kuten näette, kahden docker-tiedoston välillä on paljon yhtäläisyyksiä. Käytämme samaa ‘node: 6’ peruskuvakerroksena, luomme uuden hakemiston säilöön, teemme siitä työhakemiston ja suoritamme mm. Npm install -komennon. Mutta ainoa ero on tiedonsiirtoon paljastettu portin numero. Tässä tapauksessa porttinumero 3000 on määritelty. Täällä palvelinta isännöidään ja se etsii pyyntöjä asiakkaalta.

3. Tietokanta

Saatat ihmetellä, miksi en ole maininnut otsikossa ”dockerfile For Database”. Syynä on, että meillä ei todellakaan ole tarvetta muokata. Voimme heti vetää MongoDB-peruskuvan tietojen tallentamiseksi ja vain paljastaa portin numeron, jolla siihen pääsee.

Nyt mielessäsi olisi kysymys, missä tekisin sen? No, voimme tehdä sen Docker-kirjoitustiedostossa.

Docker-kirjoitustiedosto

Docker Compose File on YAML-tiedosto, joka sisältää tietoja palveluista, verkoista ja asemista Docker-sovelluksen määrittämiseen.

Suorita alla oleva komento löytääksesi Docker Engine -versiosi.

telakka -v

Komennon suorittaminen palauttaa isännässäsi käynnissä olevan version. Lataa isäntäsi Docker Engine -version perusteella sopiva Docker Compose -versio. Voit etsiä ladattavaa versiota osoitteesta Dockerin viralliset asiakirjat .

Koska käytän Docker Engine -versiota 17.05.0-ce, olen käyttänyt Docker Compose -versiota 3.

Asenna Docker Compose

Lataa Compose suorittamalla alla olevat komentokokonaisuudet.

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

Huomaa, että komennon versionumero muuttuu käyttämäsi Docker Engine -version perusteella.

Alla ovat komennot, jotka ovat osa Docker Compose File -tiedostoni.

version: '3.0' # määrittele docker-compose-versio # Määritä suoritettavat palvelut / säilöt: angular: # ensimmäisen palvelurakenteen nimi: angular-app # määritä Dockerfile-porttien hakemisto: - '4200: 4200' # määritä porttikartoitus express: # toisen palvelun koontiversio: express-server # määritä Dockerfile-porttien hakemisto: - '3000: 3000' # määritä porttien kartoituslinkit: - tietokanta # linkittää tämän palvelun tietokantapalvelutietokantaan: # kolmannen palvelukuvan nimi: mongo # määritä kuva, jonka avulla kontti rakennetaan satamista: - '27017: 27017' # määritä portin edelleenlähetys

Olen melko varma, että yllä olevan tiedoston komennoilla ei ole sinulle mitään järkeä. Joten ratkaistaan ​​ongelma.

Ensimmäisellä rivillä olen määrittänyt käyttämäni Docker Compose -version. Tämä on erittäin tärkeä vaihe, jos haluat, että säveltäminen toimii oikein heittämättä virheitä. Varmista, että lataat Docker Compose -version Docker Engine -version mukaan.

Sen jälkeen määritin kolme konttia avainsanalla ”palvelut”. Nämä palvelut viittaavat pinoni, käyttöliittymän, takapään ja tietokannan kolmeen komponenttiin. Joten tässä tapauksessa konttieni nimi on palvelujeni nimi, toisin sanoen 'kulmikas', 'ilmaista' ja 'tietokanta'.

Avainsanaa ”koontiversio” käytetään osoittamaan, että kyseisen säiliön pyöritettävä docker-tiedosto on kyseisessä hakemistossa. Odota, oletko hämmentynyt miten?

Se on yksinkertaista. Polku on määritettävä rakentamisen jälkeen. Meidän tapauksessamme 'kulma-sovellus' ja 'pikapalvelin' ovat polkuja kahteen hakemistoon, joihin pääsee hakemistosta, jossa Docker-kirjoitustiedosto on. Tietokantasäiliömme varten olen yksinkertaisesti sanonut, että käytä pohja-image: mongoa docker-tiedoston polun sijaan.

Kullekin näistä palveluista olen myös määrittänyt porttinumerot, joita voidaan käyttää pyyntöjen vastaanottamiseen / lähettämiseen muista kontteista (palveluista). 4200 kulmissa, 3000 pikakuljettimessa ja 27017 mongossa.

Lisäksi pikakontissa on ‘linkki’ tietokantasäiliöön, mikä osoittaa, että kaikki palvelinpuolella vastaanotetut tiedot lähetetään tietokantaan, johon ne tallennetaan.

Lopuksi olemme lopuksi luomassa säveltämisen. Docker Compose -sovelluksen aloittaminen ja kolmen kontin pyörittäminen kolmella palvelulla meidän on yksinkertaisesti suoritettava seuraavat kaksi komentoa hakemistosta, jossa Docker Compose File (YAML-tiedosto) on:

docker-compose rakentaa docker-compose ylös

Docker-compose build -komentoa käytetään palvelujen rakentamiseen / uudelleenrakentamiseen, kun taas 'docker-compose up' -komentoa käytetään konttien luomiseen / käynnistämiseen. Mene eteenpäin! Kokeile itse.

Alla on kuvakaappauksia Docker-kuvista, jotka rakennetaan ja sitten suoritetaan. Voit huomata, että kulmakuvaa rakennetaan ja sen jälkeen nimetään nimellä 'kulmikas: viimeisin'.

Myös Express-palvelun kuva rakennetaan nimellä ja tagilla 'express: latest'.

Nyt kun kuva on rakennettu, yritetään ajaa se ja kehrätä säiliö prosessin aikana. Alla on tämä kuvakaappaus.

Alla on kuvakaappaus, jossa lukee 'webpack: compiled onnistunut', mikä tarkoittaa, että Docker säilyttää nämä kolme palvelua onnistuneesti.

Nyt kun kontit ovat isännöityjä, näet palvelut aktiivisina niiden satamissa. Mene kirjoittamalla seuraavat porttinumerot selaimeesi, jotta voit olla vuorovaikutuksessa MEAN-sovelluksen käyttöliittymän kanssa.

def __init__ pythonissa

paikallinen isäntä: 4200 - Kulmasovellus (etupää)
paikallinen isäntä: 3000 - Express Server & NodeJS (taustapuoli / palvelinpuoli)
paikallinen isäntä: 27017 - MongoDB (tietokanta)

Vaikuttanut vielä? Odota, koska Docker ei ole vielä valmis! Voimme käyttää 'docker-compose scale = 'x'' -komentoa helposti suurentamaan / pienentämään käyttöönottojen määrää. Toisin sanoen voimme luoda niin monta konttia palvelua varten. Alla on täydellinen komento skaalata tietty palvelu 5-kontteihin:

telakointiaseman asteikko = 5

Palvelujen laajentaminen niin helposti, pakkaaminen ja pakkaaminen niin kustannustehokkaalla tavalla tekee Dockerista yhden parhaista käyttöönottotyökaluista ja omasta suosikistani.

Jos sinulla on edelleen epäilyksiä tästä konseptista, voit katsella alla olevaa videota, jossa olen selittänyt saman käsitteen käytännön käytännön avulla kuinka Docker Compose asetetaan.

Docker-sävellys | Säilyttävä MEAN-pino-sovellus | DevOps-opetusohjelma

Nyt kun olet oppinut Dockerista, tutustu Edureka, luotettava verkko-oppimisyritys, jolla on yli 250 000 tyytyväisen oppijan verkosto, joka levisi ympäri maailmaa. Tämä Edureka Docker -sertifiointikoulutus auttaa oppijoita saamaan asiantuntemusta Dockerin käyttöönotossa ja hallitsemisessa.

Onko sinulla kysymys meille? Mainitse se kommenttiosassa ja palaamme sinuun.