Docker Compose egy MEAN verem alkalmazás konténerezéséhez

A Docker Compose egy eszköz több tároló definiálására és futtatására a Docker összetett alkalmazásainak futtatásához, például egy MEAN alkalmazás tárolásához.

A Docker korábbi blogjaiban olvashattál arról, hogy mik a Docker képek, a Docker konténerek és mi szükség van rájuk. Ha még nem olvasott róluk, akkor kérem, olvassa el , mielőtt folytatnám ezt a blogot a Docker Compose oldalon.



A Dockerrel járó lehetőségek feltárása után minden bizonnyal nagyon izgalmas többet megtudni. Ugye? Legalábbis én voltam az, amikor egy kihívásba botlottam.



A Docker Compose bemutatása

Számomra könnyű volt egyetlen szolgáltatási alkalmazást tárolni. De amikor több szolgáltatást külön konténerekben kellett konténereznem, összefutottam egy útzárral. A követelményem az volt, hogy konténerezzek és tároljak egy MEAN stack alkalmazást.

Igen, jól olvastad. Teljes verem alkalmazás. Kezdetben azt hittem, hogy ez nem lehetséges. De miután hallottam a Docker Compose-ról, tudtam, hogy minden problémám megoldódik.



hogyan lehet kinyomtatni a tömböt php-ben

A Docker Compose segítségével külön tárolókat hozhat létre (és tárolhat) mindegyik halomhoz egy MEAN-verem alkalmazásban. A MEAN a MongoDB Express Angular & NodeJ rövidítése. A demó, amelyet ebben a blogban bemutatok, szintén ugyanarról a témáról szól.

A Docker Compose használatával ezeket a technológiákat külön tárolókban tárolhatjuk ugyanazon a gazdagépen, és elérhetjük őket, hogy kommunikáljanak egymással. Minden tároló egy portot tárol fel, amely kommunikál más tárolókkal.

Ezen tárolók kommunikációját és üzemidejét a Docker Compose fogja fenntartani.



Tehát megkérdezheti, hogyan lehet beállítani ezt az egész infrastruktúrát? Nos, hadd adjak egy részletesebb magyarázatot.

Dockerfile

Hasonlóan ahhoz, ahogyan az egyetlen alkalmazásból álló tárolót megpörgetjük egy dockerfájl megírásával, különálló docker fájlt kell írnunk az egyes egytartályos alkalmazások felépítéséhez. Ezenkívül írnunk kell egy Docker Compose fájlt is, amely elvégzi a tényleges munkát. A Docker Compose File végrehajtja a különböző docker fájlokat, hogy létrehozzák a különböző tárolókat, és lehetővé teszik, hogy kölcsönhatásba lépjenek egymással.

Esetünkben van egy teljes verem alkalmazásunk, amely a MongoDB, az ExpressJS, az Angular és a NodeJS elemeket tartalmazza. A MongoDB gondoskodik a háttér adatbázisról, a NodeJS és az ExpressJS a kiszolgálóoldali megjelenítésre, az Angular pedig a kezelőfelületre.

MEAN Stack App - Docker Compose - Edureka

Mivel három alkatrész van, mindegyik alkatrészhez tartályokat kell forgatnunk. A tartályokat a következő módon kell megpörgetnünk:

  1. 1. konténer - szögletes
  2. 2. konténer - NodeJS és ExpressJS
  3. 3. konténer - MongoDB

Docker konténerek létrehozása

Az átlagos alkalmazás dokkolásának első lépéseként írjuk meg a docker fájlt az egyes alkatrészek felépítéséhez, kezdve az Angular tartályától. Ennek a dockerfájlnak a projekt könyvtárban kell lennie, a ‘package.json’ fájl mellett. A ’package.json’ részletesen tartalmazza, hogy a függőségek mely verzióját kell használni az ’NPM-nek a szögletes alkalmazás kiépítéséhez.

1. Dockerfile a kezelőfelülethez

FROM csomópont: 6 RUN mkdir -p / usr / src / app WORKDIR / usr / src / app COPY package.json / usr / src / app RUN npm gyorsítótár tiszta RUN npm install COPY. / usr / src / app EXPOSE 4200 CMD ['npm', 'start']

Mint mindig, az első parancsunk az, hogy egy alapképet húzzunk, és egy alap ’csomópont: 6’ képet.

A következő két parancs egy új '/ usr / src / app' könyvtár létrehozásáról szól a Docker Container belsejében a szögletes kódok tárolására, és ez a munka könyvtár a Container belsejében.

Ezután másoljuk a projekt-könyvtárunkból a ‘package.json’ fájlt a konténerbe.

Ezután futtatjuk az „npm cache clean” parancsot, amely megtisztítja az npm gyorsítótárat.

Ezt követően futtatjuk az ‘npm install’ parancsot, amely megkezdi az Angular alkalmazás tárolásához szükséges kazánlemezek letöltését. Elkezdi letölteni a kazánlemezeket a ’package.json’ -ban megadott függőségek verziói alapján.

A következő „RUN” parancsfutás az összes kód és mappa átmásolása a projektkönyvtárból a konténerbe.

A fenti parancs arra kéri a tárolót, hogy tegye hozzáférhetővé a 4200-as számú portot a háttérszerverrel való kommunikációhoz, és küldje el a felhasználói felületen keresztül a felhasználói felületen keresztül hozzáférő felhasználók által küldött kéréseket.

Végül az utolsó parancs a „RUN” parancs az „npm” elindításához. Ez megkezdi az Angular alkalmazás létrehozásának kódjainak végrehajtását.

Az Angular alkalmazás készen áll, de nem lesz megfelelően tárolva, mivel függ a háttérszervertől és az adatbázistól. Tehát menjünk tovább, és írjunk egy docker fájlt a háttérszerver tárolásához.

2. Dockerfile a hátoldalhoz

Még ez a dockerfájl is jelen lesz egy projektkönyvtárban. Ez a könyvtár tartalmazza a ’package.json’ fájlt is, amely meghatározza az Express kiszolgáló függőségeit és a NodeJS egyéb követelményeit. De ami a legfontosabb, tartalmazza a háttérkiszolgálót támogató projektkódot.

FROM csomópont: 6 RUN mkdir -p / usr / src / app WORKDIR / usr / src / app COPY package.json / usr / src / app RUN npm gyorsítótár tiszta RUN npm install COPY. / usr / src / app EXPOSE 3000 CMD ['npm', 'start']

Mint látható, sok hasonlóság van a két docker fájl között. Ugyanazt a „csomópont: 6” -t használjuk, mint az alap képréteget, hozzunk létre egy új könyvtárat a konténer belsejében, tegyük munkamappává, és futtassuk többek között az „npm install” parancsot. De az egyetlen különbség a kommunikáció számára kitett portszám. Ebben az esetben a 3000-es portszám van megadva. Itt fogják kiszolgálni a szervert, és megkeresi az ügyfél kéréseit.

3. Adatbázis

Kíváncsi lehet, miért nem említettem a „dockerfile For Database” címet a címsorban. Ennek oka az, hogy valójában nincs szükségünk a testreszabásra. Rögtön elővehetünk egy „MongoDB” alapképet az adataink tárolásához, és csak kitesszük a portszámot, amelyen elérhető.

Most az lenne a kérdés, hogy merre tenném ezt? Nos, ezt megtehetjük a Docker Compose File-ban.

Docker Compose File

A Docker Compose File egy YAML fájl, amely részleteket tartalmaz a Docker alkalmazás beállításához szükséges szolgáltatásokról, hálózatokról és kötetekről.

Futtassa az alábbi parancsot a Docker Engine verziójának megkereséséhez.

dokkoló -v

A parancs végrehajtása visszaadja a gazdagépen futó verziót. A házigazdája Docker Engine verziója alapján töltse le a Docker Compose megfelelő verzióját. Megkeresheti a megfelelő verziót a letöltéshez Docker hivatalos dokumentációja .

Mivel a Docker Engine 17.05.0-ce verzióját futtatom, a Docker Compose 3. verzióját használtam.

Telepítse a Docker Compose alkalmazást

A Compose letöltéséhez futtassa az alábbi parancsokat.

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

Vegye figyelembe, hogy a parancs verziószáma a futtatott Docker Engine verziótól függően változik.

Az alábbiakban bemutatom azokat a parancsokat, amelyek a Docker Compose File részei.

verzió: '3.0' # adja meg a docker-compose verziót # Határozza meg a futtatni kívánt szolgáltatásokat / tárolókat: angular: # Az első szolgáltatás buildjének neve: angular-app # adja meg a Dockerfile portok könyvtárát: - '4200: 4200' # adja meg a port-leképezési kifejezést: # a második szolgáltatás build neve: express-server # adja meg a Dockerfile-portok könyvtárát: - '3000: 3000' # adja meg a portok leképezésének hivatkozásait: - adatbázis # összeköti ezt a szolgáltatást az adatbázis-szolgáltatás adatbázisával: # a harmadik szolgáltatási kép neve: mongo # adja meg a képet a konténer portokból történő felépítéséhez: - '27017: 27017' # adja meg a port továbbítását

Biztos vagyok benne, hogy a fenti fájlban található parancsoknak nincs értelme számodra. Tehát, oldjuk meg ezt a problémát.

A kód első sorában meghatároztam a Docker Compose általam használt verzióját. Ez egy nagyon fontos lépés, ha azt szeretné, hogy a Compose megfelelően működjön, anélkül, hogy bármilyen hibát okozna. Ne felejtse el letölteni a Docker Compose verziót a Docker Engine verziójának megfelelően.

Ezt követően három konténert határoztam meg a „szolgáltatások” kulcsszó használatával. Ezek a szolgáltatások a verem, a kezelőfelület, a hátoldal és az adatbázis három összetevőjére utalnak. Tehát ebben az esetben a tárolóim neve szolgáltatásaim neve lesz, vagyis „szögletes”, „expressz” és „adatbázis”.

A „build” kulcsszó arra utal, hogy az adott tároló fonására szolgáló dockerfájl megtalálható az adott könyvtárban. Várj, össze vagy zavarodva?

Ez egyszerű. Az útvonalat a „build:” után kell megadni. Esetünkben az „angular-app” és az „express-server” két könyvtár elérési útja, amely elérhető abból a könyvtárból, ahol a Docker Compose File található. Az adatbázis-tárolónkhoz egyszerűen azt mondtam, hogy a dockerfile elérési útja helyett használjon egy alap „image: mongo” szót.

Ezen szolgáltatások mindegyikéhez meghatároztam azokat a portszámokat is, amelyek felhasználhatók más konténerek (szolgáltatások) kéréseinek fogadására / küldésére. 4200 szögletes, 3000 expressz és 27017 mongo esetén.

Ezenkívül az expressz tárolónak van egy „link:” kapcsolata az adatbázis-tárolóhoz, jelezve, hogy a szerver oldalon kapott adatokat elküldik az adatbázisba, ahol tárolni fogják.

Most végre a Compose felállításának végéhez érkeztünk. A Docker Compose elindításához és a három tároló megpörgetéséhez három szolgáltatással egyszerűen végre kell hajtanunk az alábbi két parancsot abból a könyvtárból, ahol a Docker Compose File (YAML fájl) található:

docker-compose épít docker-compose fel

A „docker-compose build” parancsot a szolgáltatások felépítésére / újjáépítésére használják, míg a „docker-compose up” paranccsal a tárolókat hozzák létre / indítják el. Menj tovább! Próbáld ki te is.

Az alábbiakban a Docker képek építésének és végrehajtásának képernyőképei láthatók. Észreveheti, hogy a szögletes kép épül, majd a névvel „szögletes: legújabb” címkével látja el.

Ezenkívül egy kép az Express-hez épül, amelynek neve és címkéje „express: latest”.

Most, hogy a kép felépült, próbáljuk meg futtatni, és ezáltal egy tárolót forgatni a folyamat során. Az alábbiakban látható a képernyőkép.

Az alábbiakban látható a képernyőkép, amely azt írja: „webpack: sikeresen összeállítva”, ami azt jelenti, hogy a Docker sikeresen tárolja a három szolgáltatást.

Most, hogy a tárolók vannak tárolva, láthatja az adott porton aktív szolgáltatásokat. Írja be a következő portszámokat a böngészőjébe, hogy kölcsönhatásba léphessen a MEAN alkalmazás GUI-jával.

helyi gazda: 4200 - Szögletes alkalmazás (front-end)
helyi gazda: 3000 - Express Server & NodeJS (háttér- / kiszolgálóoldali)
helyi gazda: 27017 - MongoDB (adatbázis)

Még lenyűgözött? Várj, mert a Docker még nem készült el! Használhatjuk a „docker-compose scale =’ x ’” parancsot a telepítések számának egyszerű fel / le skálázására. Más szavakkal, annyi konténert hozhatunk létre egy szolgáltatás számára. Az alábbiakban bemutatjuk a teljes parancsot, hogy egy adott szolgáltatást „5” konténerekre méretezzünk:

docker-compose skála = 5

A szolgáltatások ilyen könnyű bővítése, csomagolása és konténerezése ilyen költséghatékony módon az, ami a Dockert az egyik legjobb telepítési eszköz és személyes kedvencem közé teszi.

Ha még mindig kétségei vannak ezzel a koncepcióval kapcsolatban, akkor megnézheti az alábbi videót, ahol ugyanazt a koncepciót ismertettem gyakorlati gyakorlattal a Docker Compose beállításának módjáról.

Docker írása | Konténeres MEAN Stack Application | DevOps bemutató

Most, hogy megtudta a Docker-t, nézze meg a az Edureka, egy megbízható online tanulási vállalat, amelynek több mint 250 000 elégedett tanulóval rendelkező hálózata elterjedt az egész világon. Ez az Edureka Docker tanúsító tanfolyam segít a tanulóknak szaktudást szerezni a Docker megvalósításában és elsajátításában.

Van egy kérdésünk? Kérjük, említse meg a megjegyzések részben, és mi kapcsolatba lépünk Önnel.