Gyakorlati bevezetés a Docker-írással

A Docker konténerek lehetőségek világát nyitották meg a technikai közösség számára, az új szoftverek felállításával kapcsolatos gondok csökkentek, ellentétben a régi időkkel, amikor a rendetlenséget súlyos formátum szerint kellett rendezni, ez lerövidítette az új szoftver felállításának és használatának idejét, amely végül egy nagy része a technikusoknak, hogy új dolgokat tanuljanak, tekerjék ki egy konténerbe, és ha kész, selejtezzék. A dolgok könnyűvé váltak, és a legjobb dolog, amit nyílt forráskódú, bárki és mindenki használhat, egy kis tanulási görbével jár.

A számtalan lehetőség közül megvolt az a lehetőség, hogy komplex technológiai halmokat valósítsunk meg alkalmazásaink számára, ami korábban szakértők területe lett volna. Ma a konténerek segítségével az alapul szolgáló rendszerek alapos ismeretével rendelkező szoftvermérnökök komplex halmot tudnak megvalósítani, és miért nem az óra igénye, a „Jack of all trades” beszédfigurája divatos frissítést kapott; „Egyesek mestere” a kor igényei alapján. Egyszerűen fogalmazva „T” alakú készségeket.

Lehetőség egy összetett verem definiálására egy fájlban és egyetlen parancs futtatásával, elég csábító huh. A Docker Inc. srácai úgy döntenek, hogy Docker zeneszerzésnek hívják.

Ebben a cikkben a Docker Voting App példáját fogjuk használni, és a Docker compose segítségével telepítjük.

Docker Compose

A Docker Inc. szavaival élve

A Compose egy eszköz a több tárolós Docker alkalmazások meghatározásához és futtatásához. A Compose alkalmazásban YAML fájlt használ az alkalmazás szolgáltatásainak konfigurálásához. Ezután egyetlen paranccsal létrehozza és elindítja az összes szolgáltatást a konfigurációjából.

A Szavazás App

Bemutatjuk a Docker közösség számára a „The Voting App” legkedveltebb bemutató alkalmazását, mintha egyáltalán bevezetésre lenne szüksége. Ez egy egyszerű alkalmazás, amely a mikro-szolgáltatások architektúráján alapul, 5 egyszerű szolgáltatásból áll.

  1. Szavazás-alkalmazás : A Pythonban írt alkalmazás kezelőfelülete, amelyet a felhasználók használnak szavazataik leadására.
  2. Redis : Memóriában lévő adatbázis, köztes tárolóként használják.
  3. Munkavállaló : .Net szolgáltatás, a Redis szavazatainak lekérésére és a Postres adatbázisban történő tárolására szolgál.
  4. DB : PostgreSQL adatbázis, adatbázisként használják.
  5. Eredmény-alkalmazás : A Node.js-ben írt alkalmazás kezelőfelülete megjeleníti a szavazás eredményét.

A Szavazás repónak van egy fájlja, amely docker-compose.ymlezt a fájlt tartalmazza a tárolók létrehozásának, a portok feltárásának, a kötetek lekötésének és a tárolók összekapcsolásának a szavazási alkalmazás működéséhez szükséges hálózatokon keresztüli konfigurációval. Nagyon soknak tűnik, docker runés docker network createkülönben parancsok, a docker-komponálás lehetővé teszi számunkra, hogy az összes cuccot egyetlen docker-compose fájlba helyezzük yaml formátumban.

version: "3" services: vote: build: ./vote command: python app.py volumes: - ./vote:/app ports: - "5000:80" networks: - front-tier - back-tier result: build: ./result command: nodemon server.js volumes: - ./result:/app ports: - "5001:80" - "5858:5858" networks: - front-tier - back-tier worker: build: context: ./worker depends_on: - "redis" networks: - back-tier redis: image: redis:alpine container_name: redis ports: ["6379"] networks: - back-tier db: image: postgres:9.4 container_name: db volumes: - "db-data:/var/lib/postgresql/data" networks: - back-tier volumes: db-data: networks: front-tier: back-tier:

Git cloneés cda szavazás app repo.

dokkolóminták / példa-szavazás-kb

example-szavazás-alkalmazás - Docker példa Írja össze a github.com alkalmazást

Írási idő

Az összes alkalmazásunkat egyetlen írási fájlban definiálva megkönnyebbülhetünk, lehűthetjük és egyszerűen futtathatjuk az alkalmazást. A zeneszerzés szépsége abban rejlik, hogy egyetlen parancs létrehozza az összes szolgáltatást, bekapcsolja a hálózatokat (szó szerint), összeszereli az összes kötetet és kiteszi a portokat. Itt az ideje, hogy üdvözölje a upparancsot, elvégzi az összes fent említett feladatot. $ Docker-compose up

Sok „Pull complete”, több megabájt és néhány perc (talán még több) után. . .

Voila, a szavazóalkalmazás elindult és működik.

A Command docker psfelsorolja az összes futó konténert

$ docker ps -a --format="table {{.Names}}\t{{.Image}}\t{{.Ports}}" NAMES IMAGE PORTS voting_worker_1 voting_worker db postgres:9.4 5432/tcp voting_vote_1 voting_vote 0.0.0.0:5000->80/tcp voting_result_1 voting_result 0.0.0.0:5858->5858/tcp, 0.0.0.0:5001->80/tcp redis redis:alpine 0.0.0.0:32768->6379/tcp

A fenti parancs megjeleníti az összes futó tárolót, a megfelelő képeket és a kitett port számokat.

A Szavazás alkalmazás a // localhost: 5000 oldalon érhető el

Hasonlóképpen, a Szavazási eredmények alkalmazás elérhető a // localhost: 5001 oldalon

A Szavazás alkalmazáson leadott minden szavazatot először a Redis memória adatbázisában tárolják. A .Net munkásszolgáltatás lekéri a szavazatot, és eltárolja azt a Postgres DB-ben, amelyet a Node.js kezelőfelülete ér el.

Jellemzők írása

A Compose rugalmasságot biztosít a projektnév használatához a környezetek elkülönítésére, a projektnév a projektet tartalmazó könyvtár alapneve. A szavazó alkalmazásunkban ezt a tárolók neve jelöli, voting_worker_1ahol votinga könyvtár alapneve található. Egyéni projektnevet állíthatunk be a -pzászló, majd az egyéni név használatával.

A Compose megőrzi az írási fájlban meghatározott szolgáltatások által használt összes kötetet, így a konténerek újbóli használatával nem vesznek el adatok docker-compose up. Egy másik jó tulajdonság, hogy csak a megváltozott konténerek kerülnek újjá, azok a konténerek, amelyek állapota nem változott, érintetlenek maradnak.

Egy másik jó tulajdonság a változók támogatása az írási fájlban, változókat definiálhatunk egy .envfájlban, és felhasználhatjuk őket a docker-compose fájlban. Itt a POSTGRES_VERSION=9.4környezeti fájlban definiálható vagy a shellben definiálható. Az írási fájlban a következő módon használják:

db: image: "postgres:${POSTGRES_VERSION}"

Parancs Cheat Sheet

Könnyű a szellő elindítása, leállítása és a zeneszerzés.

$ docker-compose up -d $ docker-compose down $ docker-compose start $ docker-compose stop $ docker-compose build $ docker-compose logs -f db $ docker-compose scale db=4 $ docker-compose events $ docker-compose exec db bash

Összegzés

A Docker Compose nagyszerű eszköz a konténerek gyors telepítésére és selejtezésére. Az írási fájl zökkenőmentesen futtatható minden olyan gépen, amelyre a docker-compose telepítve van. A kísérletezés és a tanulási technológiák csak egy Compose fájlra vannak;).

Remélem, hogy ez a cikk segített a Docker Compose megértésében. Szívesen hallanék arról, hogyan használja a Docker Compose-ot a projektjeiben. Oszd meg az ismereteket, segítsen több emberhez eljutni.