‫Această secțiune se va concentra exclusiv pe Docker Compose, care este o combinație între un instrument
‫de linie de comandă și un fișier de configurare. Cerințele pentru această secțiune sunt că într-adevăr
‫trebuie să cunoașteți multe dintre fundamentele din ultimele secțiuni din jurul imaginilor și al containerelor.
‫Pe măsură ce trecem prin acest curs, probabil că veți începe să mă auziți că mă
‫tot mai entuziasmat pentru că lucrurile se păstrează tot mai bine.
‫Dreapta?
‫Pe măsură ce înveți o componentă, te gândești: "omul, montajele și volumele de legare sunt foarte bune. Asta mă va salva
‫puțin. Îmi pot imagina cum o să folosesc asta. Blah bla bla bla.
‫Apoi, voi veni cu următorul lucru care va fi chiar mai bun decât ceea ce tocmai ați învățat.
‫În acest caz, nu ar putea fi mai adevărat.
‫Docker Compune. Deci ce este? Și de ce ne pasă? Atât de puține servicii software sunt cu adevărat independente.
‫Când vă gândiți la recipientele dvs., acestea sunt o singură soluție de proces și rareori vom folosi doar un
‫singur container pentru a rezolva o problemă sau pentru a oferi un serviciu clienților noștri.
‫Containerele noastre vor necesita adesea alte containere, cum ar fi SQL sau o valoare cheie. Și alte aplicații pe care va trebui să le
‫executăm în containere, cum ar fi proxy-uri sau interfață web sau lucrători backend, și așa mai departe.
‫Dacă am avea o modalitate de a conecta toate aceste elemente ale soluției împreună, unde
‫nu am nevoie să ne amintim toate opțiunile de rulare ale dockerilor, apoi să le aducem în rețele discrete,
‫virtuale cu relații între ele și să expunem doar publicului porturi, apoi le rotiți pe toate și le rupeți cu o
‫singură comandă.
‫Ei bine, asta e Docker Compose.
‫Înainte de a ne scufunda, trebuie să clarificăm că
‫există două părți la Docker Compose. Prima parte este fișierul YAML și este foarte simplu de înțeles.
‫Este scris în YAML, și dacă nu ați lucrat niciodată cu YAML, acesta este un limbaj de configurare foarte ușor.
‫Este aproape la fel de ușor ca fișierul INI.
‫De fapt, cred că este mai ușor pentru că arată ierarhie.
‫Ne vom arunca cu capul în asta. Acest fișier este locul unde specificați toate containerele pe care trebuie
‫să le executați, rețelele de care aveți nevoie, eventualele volume de care aveți nevoie, variabilele de mediu, imaginile și tot felul de alte opțiuni
‫de configurare.
‫Apoi, a doua parte a programului Docker Compose este un instrument CLI, care este un comutator-docking, pe
‫care îl folosim în mod normal doar pentru dev și test local, folosind acel fișier YAML pe care l-am creat pentru a simplifica comenzile Docker.
‫Să vorbim despre fișierul Docker Compose.
‫Există de fapt versiuni la lucrurile pe care le puteți pune în fișierul de compunere. Deci, când Docker Compose a fost creat cu ani în urmă, a fost numit
‫de fapt "Fig" și tocmai a fost presupusă versiunea 1. De fapt, el nu a
‫prezentat chiar o versiune în fișier. Pe măsură ce a ajuns la maturitate și a adăugat
‫noi funcții în ceea ce privește conținutul fișierului, cum ar fi rețelele și volumele, au creat instrucțiunea de versiune, care
‫este de fapt prima linie a fișierului. Acest fișier poate fi folosit cu un Docker Compose CLI, despre care vom vorbi
‫într-un minut.
‫Acesta este, din nou, în principal pentru gestionarea dezvoltării locale și doar pentru a facilita deplasarea în
‫mediile dvs. pe mașina dvs. locală.
‫Acum, începând cu începutul anului 2017, avem versiunea 1. 13 și orice altceva dincolo de acestea, aceste fișiere pot fi acum utilizate direct
‫cu linia de comandă a docherii în producție cu roiuri. Desigur, este foarte util la linia
‫de comandă cu ajutorul --help.
‫Așa cum ne uităm la câteva dintre exemple, știm că fișierul Docker Compose este un nume implicit, dar de fapt,
‫puteți folosi orice nume de fișier pe care îl doriți, atâta timp cât este corect YAML și că utilizați -f pentru a specifica fișierul pe care
‫îl " încercați să utilizați.
‫Dacă îmi deschid editorul și mă uit la șablon aici, vroiam doar să arătăm câteva din conturul a ceea ce
‫ar trebui să pară.
‫Avem valoarea versiunii la început.
‫Cea mai nouă versiune în primul trimestru din 2017 este de 3. 1.
‫Dar am întotdeauna cel puțin versiunea 2. Dacă nu adăugați acea linie acolo, se presupune întotdeauna că este versiunea
‫1.
‫Dar nu recomand acest lucru pentru că pierdeți multe dintre caracteristici.
‫Deci încep de obicei cu versiunea 2. Apoi, dacă am nevoie de caracteristici specifice din versiunile 3 și 3. 1, am
‫terminat tastând numărul de versiune acolo. Veți vedea celelalte trei secțiuni principale care
‫sunt servicii, volume și rețele, nu?
‫Deci, acesta este ierarhic.
‫În cadrul serviciilor, totul poate fi două sau patru spații, dar trebuie să fie consecvent.
‫Dacă doar căutați YAML pe internet, veți găsi câteva site-uri care vă vor îndruma cu specificul
‫formatării acestui fișier.
‫Dacă utilizați un editor modern, acesta va vorbi limba YAML și va ști cum să se ocupe de aceste
‫fișiere și de formatarea acestora.
‫De obicei, aici, aveți, cel puțin, servicii, care este într-adevăr containere.
‫Motivul pentru care le numesc de fapt servicii este că fiecare container pe care îl creați aici, ar putea avea
‫de fapt mai multe din acele containere pentru redundanță. A trebuit să vină cu un alt
‫cuvânt.
‫Cred că serviciile sunt minunate, pentru că în esență faci ceea ce faci. Dreapta?
‫Fiecare container sau recipiente, identice, pe care le utilizați, oferă de obicei un serviciu pentru
‫ceva.
‫Sub numele serviciului, și din nou îl puteți numi oricând doriți.
‫Nu trebuie să fie numele imaginii sau nu trebuie să fie nimic legat deloc.
‫Ar putea fi Barney pentru numele serviciului, dar acesta va fi numele DNS pe care îl vom afla ulterior,
‫fiind folosit în interiorul rețelelor Docker.
‫Similar cu când dați --name-ului unei comenzi de rulare la docker.
‫Aici am arătat că putem specifica opțional imaginea. Putem specifica comanda alternativă
‫de rulare. Dacă vrem să înlocuim comanda reală specificată în imagine când o
‫executăm, putem face asta aici.
‫Practic, toate lucrurile pe care le facem de la docker rulează comanda, le putem salva aici. Pentru că despre asta este
‫vorba, ia toate lucrurile din amintirea tuturor lucrurilor diferite din comanda de docker run pentru
‫acele lucruri pe care le executați în mod constant.
‫Dacă aveți propriile medii de dezvoltare sau instrumentele proprii, probabil că nu doriți să
‫introduceți din nou aceste comenzi. Și scripturile de shell nu pot face decât atât de mult.
‫Dreapta?
‫Deci, acest fișier ar înlocui, de fapt, un script de shell care ar automatiza comenzile docker run.
‫Aceasta este o modalitate mult mai bună de a face acest lucru.
‫Este mai ușor de citit și este mai bine documentat.
‫Veți observa că spațiile de aici sunt permise.
‫Puteți să aveți spații în comentarii ori de câte ori doriți.
‫Dacă aveați mai multe servicii, trebuie să vă asigurați că sunt nume unice.
‫Apoi, celelalte părți pe care le specificăm sunt volume și rețele. Și din nou, acestea sunt opționale, de asemenea.
‫În principiu sunt aceleași reguli ca atunci când alergi din linia de comandă.
‫Dacă ar fi trebuit vreodată să folosiți volumul docului creat sau rețeaua de docere, creați comenzi și, din nou, nu
‫trebuie întotdeauna să faceți asta.
‫Depinde doar de situația dvs.
‫Le puteți pune și aici.
‫Să ne uităm la o lume reală, un exemplu simplu.
‫Vă amintiți în ultima secțiune, am avut o prelegere în care am folosit-o foarte repede pe Jekyll pentru a face un
‫exemplu de legare.
‫Deci, acesta ar fi ceea ce ar arăta fișierul de compoziție pentru comanda de executare a docker-ului și veți vedea
‫că am specificat imaginea aici.
‫L-am numit Jekyll.
‫I-am dat un volum. Veți observa în loc să utilizați pwd-ul, Compose înțelege de fapt punctul, adică
‫acesta este directorul curent de lucru în care mă aflu.
‫Doar folosiți acest director de la care execut fișierul compose din. Apoi porturile sau opțiunea -p.
‫Veți observa câteva lucruri despre YAML, unde, dacă ceva are doar o singură opțiune, de parcă
‫ar fi o singură imagine pentru fiecare serviciu, ar fi de obicei un format cheie și de valoare ca acesta.
‫Dacă va fi o listă de elemente, cum ar fi volume și porturi în care puteți avea mai multe, veți observa
‫că fișierul de compunere are, de obicei, un plural. În loc de volum, sunt volume. Și în loc de port, porturile sunt.
‫Și apoi va fi un format de listă cu un -.
‫Dacă sari într-un alt exemplu real rapid.
‫Veți vedea că, în acest caz, aceasta
‫este de fapt o instalare WordPress probabilă, unde aveți serviciul de bază de date jos, care rulează un container
‫de bază de date.
‫Și apoi containerul serverului WordPress de sus în sus.
‫Veți observa un lucru mic care este diferit despre acest lucru este că folosim variabilele de mediu,
‫care ar fi la fel ca a -e la linia de comandă. Dar, în loc de un format de listă în
‫care avem un -,
‫acesta este, din nou, o altă instrucțiune cheie și valoare.
‫În acest format, nu folosim butonul -, doar enumerăm cheia și valoarea.
‫Dacă ar fi trebuit să adaug un altul, aș face asta aici. Toate acestea ar fi trecute în
‫container, atunci când rulează, utilizând linia de comandă compune.
‫Apoi, avem un exemplu. Acesta este un pic mai complicat. De fapt, am lucrat
‫recent pentru a configura un cluster de baze de date bazate pe trei baze de date în spatele unui server web Ghost.
‫Ghost este de fapt un sistem de blog similar cu WordPress. Veți vedea că am mai multe
‫variabile de mediu pentru fiecare dintre aceste containere.
‫Așa că am un container de Ghost sus. Apoi, am de fapt acest lucru cunoscut sub numele
‫de Proxy SQL, care se află în fața serverelor MySQL și acționează ca un balancer de sarcină și o soluție de eroare.
‫Apoi am unul din cele două servere MySQL. Veți observa o altă opțiune aici care spune "depinde de"
‫și depinde de ea este destul de comună.
‫În principiu, ajută Compose să înțeleagă relația dintre aceste servicii. Știe că dacă am nevoie
‫să încep Ghost, atunci trebuie să încep și altele.
‫Puteți vedea aici că Duhul meu depinde, de fapt, de acestea. Vom lua detalii despre modul în
‫care funcționează în cursurile ulterioare.
‫Dar deocamdată, probabil că este vorba de o digestă foarte mare, și de toate aceste comenzi diferite și de orice altceva, dar
‫aveți încredere că Docker are o documentație foarte bună pe site-ul lor. Dacă doar căutați fișierul Docker Compose pe Google,
‫probabil veți găsi acest lucru cu primele câteva clicuri.
‫Va fi sub docs. docher. com, ca de obicei, și
‫va fi o documentație despre fiecare opțiune mică și valoroasă pe care o aveți.
‫Veți vedea că depinde de ce tocmai am menționat. Veți vedea mediul înconjurător aici unde arată diferite modalități de a
‫pune în variabilele de mediu. Ce este minunat în legătură cu această documentație vă oferă
‫o mulțime de exemple.
‫Personal, sunt pe acest site în fiecare zi, la fel ca și pe pagina de opțiuni de comenzi rulate la docker sau pe pagina de
‫opțiuni de comenzi compuse.
‫Sunt mereu în legătură cu aceste lucruri, deoarece în zilele noastre sunt atîtea sincerități că nu le pot
‫aminti pe toate.
‫Așa că le țin aproape în marcajele mele.
‫Acum, dacă avem o idee generală despre cum poate arăta formatul fișierului compusă, să trecem la linia
‫de comandă și să aflăm despre instrumentul Docker Compose CLI.