‫În această secțiune, am acoperit multe despre Swarm. Swarm, Stacks and Secrets sunt un fel de trilogie
‫de caracteristici minunate care pot face lucrurile mult mai usoare in productie pentru noi.
‫Vreau să vă arăt cum ar putea fi dacă ați luat fișierele Compozit, le-ați organizat în câteva moduri
‫și asta este ceea
‫ce eu numesc în realitate trăind visul.
‫Se pare că puteți folosi de fapt un singur fișier pentru a face multe lucruri, dar uneori complexitatea
‫dvs. crește și veți avea nevoie de mai multe fișiere Compune.
‫Vreau doar să alerg rapid.
‫Nu trebuie să faci asta chiar dacă nu vrei. Voiam să vă arăt un exemplu despre
‫modul în care aceste fișiere Compose pot funcționa împreună pentru a vă construi mediul în timp ce mergeți.
‫În acest scenariu, vom folosi compilația docker pentru mediul nostru de dezvoltare locală.
‫Vom folosi un docker compune config și fișier pentru mediul nostru CI pentru a face testarea de integrare.
‫Apoi, atunci când suntem în producție, vom folosi acele fișiere pentru a lansa stack-ul docker pentru
‫a implementa într-adevăr mediul de producție cu un stack. Deci, sunt pe mașina mea locală și vom folosi exemplul anterior
‫al scenariului Drupal, cu un server de bază de date și un interfață web.
‫Avem Dockerfile pe care l-am folosit în misiunile noastre anterioare. Refacem o configurație personalizată, dar simplă,
‫drupală, cu un șablon.
‫Apoi vom avea un fișier implicit de compunere.
‫Aceasta se numește o
‫suprascriere, ceea ce suntem pe punctul de a face. O suprascriere este în cazul în care am fișierul standard
‫Docker Compose și setează setările prestabilite care sunt aceleași în toate mediile mele.
‫Apoi, am acest fișier de suprascriere care, în mod implicit, Docker Compose, dacă se numește acest
‫nume exact, compune docer. trece peste. yml, aceasta va aduce automat acest lucru ori de câte ori fac un docer compun sus.
‫Veți vedea că, în acest scenariu, asumăm dezvoltarea locală, deoarece într-adevăr dorim ca comenzile tipărite de mână pe care le vom
‫tasta să fie cele mai ușoare pe plan local.
‫În mod normal, în mediul dvs. CI, este totul automat, așa că nu ne pasă dacă aceste comenzi
‫sunt puțin mai lungi.
‫Dar chiar vrem ca la nivel local să se compună docul ușor.
‫Lucrul cool este Docker Compose va citi automat acest fișier și va aplica
‫acest lucru peste partea de sus sau va suprascrie orice setări din fișierul Docker Compose yml.
‫Și aici, observați
‫că nu am numele imaginii, pentru că este deja specificat aici. În acest fișier de suprascriere,
‫suprascriu, spunând că vreau să construiesc imaginea local utilizând Dockerfile în acest director curent.
‫Vreau să creez un port pe 8080 pentru dezvoltarea locală. Și am setat niște volume și chiar vei observa că ți-am dat un exemplu aici
‫despre o montare de legătură, unde aș putea să fac o temă personalizată. Și vreau să montează tema pe gazda mea
‫în container ca în secțiunile anterioare, ca să o pot schimba pe plan local și apoi
‫să o văd imediat pe server.
‫Apropo, pentru acest exemplu, nu știu cum să dezvolte teme în Drupal.
‫Nu sunt sigur că dacă schimb un fișier acolo, va fi automat reflectat.
‫Am vrut doar să arătăm un exemplu despre modul în care faceți o dezvoltare pe web, în ​​mod obișnuit acesta este modul în care ați face
‫acest lucru fără a trebui să opriți și să începeți compunerea de fiecare dată. Aici, sub postgres, avem variabila de mediu
‫și setările Secret ca înainte. Avem volume definite, și veți vedea în jos,
‫am
‫de fapt secretul bazat pe fișiere, deoarece atunci când facem dezvoltare locală, trebuie să folosim secretul
‫bazat pe fișiere.
‫Lucrurile devin puțin interesante atunci când mă uit la acest produs sau testează fișierele. Modul în care aceasta va
‫funcționa este, amintiți-vă că. trece peste. yml este automat preluat de linia de
‫comandă Docker Compose. În produs
‫sau test, trebuie să le specificăm manual.
‫Deci, pentru test, va trebui să folosim comanda -f.
‫Dacă vă amintiți din secțiunile anterioare, -f este atunci când facem un docker compune că vrem să specificăm
‫un fișier personalizat. Îți voi arăta asta într-un minut.
‫Apoi, în producție, din moment ce nu vom avea linia de comandă Docker Compose pe un server
‫de producție, ceea ce vom face aici este că vom folosi de fapt o comandă de configurare a comenzii docker.
‫Comanda de configurare va face de fapt o ieșire prin combinarea sau combinarea rezultatelor mai multor
‫fișiere de configurare.
‫Deci, asta va fi foarte cool.
‫Real rapid, fișierul de testare are doar drupal și postgres.
‫Imaginați-vă dacă aceasta a fost soluția dvs. Jenkins CI sau Codeship CI, unde vreau să construiesc imaginea de fiecare
‫dată când îmi dau codul și vreau să spun asta și vreau să fie în acest
‫port pentru scopuri de testare. Apoi o să folosesc o parolă falsă. Dar nu trebuie să definim niciunul dintre volume,
‫pentru că nu voi încerca să păstrez numere de date volumice deoarece, din nou, este doar o platformă CI.
‫De îndată ce trece testul sau eșuează, va scăpa de tot.
‫Apoi, în acest scenariu, s-ar putea să observați că am luat de fapt acest scenariu cu date de
‫probă unde poate în soluția dvs. CI aveți doar baze de date care stau acolo fie dintr-un depozit Git
‫personalizat, fie poate fi descărcat prin FTP. Sau se întâmplă ceva în timpul inițializării CI-ului dvs.
‫unde se descarcă de fapt un fișier de bază de date. Și în loc să ne creeze baza de date de fiecare
‫dată când facem testarea CI, vom monta acest director de date de probă în care ar trebui să fie datele noastre
‫postgres.
‫Și astfel, am putea garanta că avem aceleași date de probă de fiecare dată când efectuăm un test CI.
‫Nu o să mai intru în asta. Vroiam doar să arăt că ar putea
‫fi altfel acest fișier pentru CI.
‫Apoi, în producție, avem toate preocupările noastre normale de producție. Specificăm volumele pentru datele
‫noastre specifice. Specificăm secretul nostru. Și observați în jos, avem secretul extern.
‫Pentru că vom pune deja secretul prin linia de comandă ca în cazul
‫misiunii anterioare.
‫Ideea este că toate aceste trei configuri sunt diferite într-un fel, dar toate se
‫referă la configurația de bază sau la configurația de bază, care definește doar cele două servicii și imaginile lor.
‫Puteți vedea aici. Iată un memento a ceea ce pare.
‫Să ieșim din asta și să executăm câteva comenzi.
‫Dacă mă uit în acest director, veți vedea că am fișierul de bază și apoi fișierele de suprascriere trei.
‫Din nou, amintiți-vă că suprascrierea. yml este implicit.
‫Dacă fac un docer compun, ceea ce va face de fapt aici este să folosiți docul-compose. yml, și apoi va
‫suprapune suprascrierea. yml unul pe partea de sus. Vreau să pun un -d în
‫așa că putem să ne uităm imediat după ce a început. Voi face un docier să inspecteze imaginea drupală.
‫Și ceea ce vroiam să vă arăt că a fost aici, are toate monstrele listate.
‫Deci, știm că a luat fișierul de suprascriere deoarece fișierul de suprascriere a fost locul în care am definit toate
‫aceste mounts.
‫Deci știm că a ales asta.
‫Evident, dacă nu ar fi luat-o pe cea de bază, nici măcar nu știa ce imagini
‫să folosească, așa că ne-ar plânge și ne-ar spune că fișierul Compose era incomplet.
‫Acel lucru a funcționat.
‫Să facem o scurtă repriză.
‫Dacă trebuia să executăm comanda de care aveam nevoie pentru soluția noastră CI, ceea ce ar fi trebuit să
‫facem pentru soluția noastră CI a fost să ne asigurăm că Docker Compose a fost acolo și instalat și disponibil, astfel încât
‫să putem face comenzi pentru comanda docker. Apoi putem specifica -f, iar apoi
‫ordinea lui f este fișierul de bază întotdeauna trebuie să fie primul.
‫Deci, docerul compune yml, apoi testul de docker compune.
‫Dacă am făcut acest lucru cu un sus în sus și un -d, și apoi m-am dus și inspectat același drupal,
‫veți observa că nu există mount-uri bind.
‫Ele lipsesc complet din cauză că în fișierul de testare nu am specificat-o.
‫De fapt, nu am avut nevoie de Drupal pentru a salva informația, deoarece ar fi fost
‫aruncată la sfârșitul rundei noastre.
‫Și apoi, în al treilea rând, avem configurația de producție.
‫Config-ul de producție va fi puțin diferit.
‫Am să-l lovesc pe săgeata de sus și apoi o să-l fac pe prod. În locul unei comenzi sus, ceea
‫ce vreau să fac aici este o config.
‫Dacă vă uitați doar la ajutorul real pentru config, acesta are doar două opțiuni și nici una dintre
‫ele nu este relevantă în această situație.
‫Ceea ce vrem să facem este doar să rulați config de la sine. Ceea ce va face efectiv este să
‫se uite la ambele fișiere și să le împingeți împreună într-un singur fișier Compose echivalent.
‫Deci, ce am putea face aici este doar să rulați această comandă undeva în soluția noastră CI. Apoi o scoateți la un
‫fișier, poate știți ceva, ceva de genul ăsta. Fișierul de ieșire ar fi cel pe care l-am
‫folosi oficial în producție pentru a crea sau actualiza stiva noastră.
‫Cu toate acestea, vreau să arunc puțin aici.
‫Toate acestea sunt lucruri relativ noi.
‫Știm că Secretele și Stack-urile sunt relativ noi.
‫Au doar câteva luni.
‫De la această înregistrare.
‫Deci sunt două margini aspre.
‫Tocmai am pornit comanda de configurare și veți observa că secretele nu au fost enumerate acolo.
‫E un bug în prezent.
‫De fapt, lucrez cu echipa Docker pentru a vedea dacă nu putem scăpa de acel bug.
‫Deci, până când ați citit acest lucru, probabil că ați fost deja reparate.
‫Asigurați-vă că inspectați ieșirea liniei de configurare înainte de a vă
‫deplasa în producție.
‫În al doilea rând, opțiunea Compune se extinde, pe care nu am discutat aici, este un alt mod de a
‫înlocui aceste fișiere Compune unde utilizați efectiv fișierul de suprascriere și de fapt definiți o secțiune extinde
‫acolo.
‫Este un pic mai declarativ, deci este mai ușor de înțeles. Voi oferi un link în
‫referințele pentru această secțiune. Știți că opțiunea Extensie nu funcționează încă în stivele Swarms.
‫Nu am menționat-o aici, pentru că nu vă dă întregul ciclu de viață al aplicațiilor pe care speram,
‫dar mă aștept să-l facem la un moment dat să facă ceva.
‫Asemenea fie adăugați-o în Swarm, fie creați un flux de lucru mai bun. Pentru că într-adevăr ideea pe care încercăm să
‫o realizăm cu toate aceste instrumente este de a avea un ciclu de viață complet și ușor de la dezvoltare
‫până la încercare, în producție, cu același set de configurații, în același set de imagini .
‫Sper că v-ați gândit cum puteți face aplicațiile dvs. în acest fel și cum vă
‫puteți extinde propriile fișiere Compune pentru scenarii complexe.
‫Deoarece nimic nu îmi face un zâmbet mai rapid cu Docker decât atunci când văd pe cineva să execute o comandă de o
‫singură linie pentru a face ceva care anterior a avut mai multe script-uri de executat.