Containerele Docker au deschis o lume de posibilități pentru comunitatea tehnologică, problemele legate de configurarea unui nou software au scăzut, spre deosebire de vremurile vechi, când o mizerie trebuia sortată după un format grav, a redus timpul de configurare și utilizare a unui nou software, care în cele din urmă a jucat un o parte importantă pentru tehnicieni să învețe lucruri noi, să o desfășoare într-un container și să o arunce la final. Lucrurile au devenit ușoare, iar cel mai bun lucru pe care îl poate folosi oricine și toată lumea, vine cu o mică curbă de învățare.
Din nenumăratele posibilități a fost posibilitatea de a implementa stive tehnologice complexe pentru aplicațiile noastre, care anterior ar fi fost domeniul experților. Astăzi, cu ajutorul inginerilor de software pentru containere, cu o înțelegere solidă a sistemelor care stau la baza lor, pot implementa o stivă complexă și de ce nu este nevoia orei, figura de vorbire „Jack of all trades” a primit un upgrade elegant; „Stăpânul unora” pe baza nevoilor epocii. Pur și simplu puneți abilități în formă de „T”.
Posibilitatea de a defini o stivă complexă într-un fișier și de a o rula cu o singură comandă, destul de tentant huh. Băieții de la Docker Inc. aleg să o numească Docker compose.

În acest articol, vom folosi exemplul Docker Voting App și îl vom implementa folosind Docker compose.
Docker Compose
În cuvintele Docker Inc.
Compune este un instrument pentru definirea și rularea aplicațiilor Docker cu mai multe containere. Cu Compose, utilizați un fișier YAML pentru a configura serviciile aplicației dvs. Apoi, cu o singură comandă, creați și porniți toate serviciile din configurația dvs.Aplicația de vot
Vă prezentăm cea mai preferată aplicație demonstrativă pentru comunitatea Docker „The Voting App”, de parcă ar avea nevoie de o introducere. Aceasta este o aplicație simplă bazată pe arhitectura micro-servicii, formată din 5 servicii simple.

- Voting-App : Frontend-ul aplicației scrise în Python, utilizat de utilizatori pentru a-și exprima votul.
- Redis : bază de date în memorie, utilizată ca stocare intermediară.
- Lucrător : serviciu .Net, folosit pentru a prelua voturi de la Redis și pentru a le stoca în baza de date Postres.
- DB : baza de date PostgreSQL, utilizată ca bază de date.
- Rezultat-aplicație : Frontend-ul aplicației scrise în Node.js, afișează rezultatele votului.
Depozitul Voting are un fișier numit docker-compose.yml
acest fișier conține configurația pentru crearea containerelor, expunerea porturilor, legarea volumelor și conectarea containerelor prin rețelele necesare pentru ca aplicația de vot să funcționeze. Sună ca o mulțime de comenzi destul de lungi docker run
și docker network create
altfel, docker compose ne permite să punem toate acele lucruri într-un singur fișier docker-compose în format yaml.
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
și cd
în repo-ul aplicației de votare.
dockersamples / example-vote-app
example-vote-app - Exemplu de aplicație Docker Compose github.com
Compuneți timpul
Cu toate aplicațiile noastre definite într-un singur fișier de compunere, putem oferi ușurință, răcire și pur și simplu rulați aplicația. Frumusețea compunerii constă în faptul că o singură comandă creează toate serviciile, conectează rețelele (literalmente), montează toate volumele și expune porturile. Este timpul să accepte up
comanda, îndeplinește toate sarcinile menționate mai sus. $ Docker-compose up
După o mulțime de „Extragere completă”, sute de megaocteți și câteva minute (poate mai multe). . .
Voila, avem aplicația de vot activată.
Comanda docker ps
listează toate containerele care rulează
$ 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
Comanda de mai sus afișează toate containerele care rulează, imaginile respective și numerele de port expuse.
Aplicația Voting poate fi accesată pe // localhost: 5000

De asemenea, aplicația pentru rezultatele votului poate fi accesată pe // localhost: 5001

Fiecare vot exprimat în aplicația Voting este stocat mai întâi în baza de date Redis in-memory, serviciul de lucrător .Net preluează votul și îl stochează în baza de date Postgres accesată de frontendul Node.js.
Caracteristici de compunere
Compunerea oferă flexibilitatea de a utiliza un nume de proiect pentru a izola mediile unul de celălalt, numele proiectului este numele de bază al directorului care conține proiectul. În aplicația noastră de vot, aceasta este semnificată de numele containerelor voting_worker_1
unde voting
este numele de bază al directorului. Putem seta un nume de proiect personalizat folosind -p
steagul urmat de numele personalizat.
Compunerea păstrează toate volumele utilizate de serviciile definite în fișierul de compunere, astfel nu se pierd date atunci când containerele sunt recreate folosind docker-compose up
. O altă caracteristică interesantă este că doar containerele care s-au schimbat sunt recreate, containerele a căror stare nu s-a modificat rămân neatinse.
O altă caracteristică interesantă este suportul pentru variabilele din fișierul compune, putem defini variabile într-un .env
fișier și le putem folosi în fișierul docker-compune. Aici POSTGRES_VERSION=9.4
poate fi definit în fișierul de mediu sau poate fi definit în shell. Este utilizat în fișierul compune în modul următor:
db: image: "postgres:${POSTGRES_VERSION}"
Foaie de trișare comandă
Este ușor ca briza să începi, să te oprești și să te joci cu compunerea.
$ 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
rezumat
Docker Compose este un instrument excelent pentru implementarea rapidă și resturile containerelor, fișierul compose poate rula perfect pe orice mașină instalată cu docker-compose. Experimentarea și tehnologiile de învățare sunt la doar un fișier Compose;).
Sper că acest articol a ajutat la înțelegerea Docker Compose. Mi-ar plăcea să aud despre cum folosești Docker Compose în proiectele tale. Împărtășiți cunoștințele, ajutați-le să ajungă la mai mulți oameni.