‫Această prelegere va fi vorba despre adăugarea de imagini în fișierele Compune astfel încât să se asigure în
‫mod automat că aveți o imagine gata de
‫plecare atunci când executați comenzi compuse. La fel ca și alți lectori din
‫această secțiune, trebuie să aveți un sentiment bun de funcționalitate a containerului Docker și a liniei de comandă a imaginii Docker.
‫Un alt lucru pe care Compose îl poate face pentru dvs. este construirea imaginilor în timpul rulării. Acesta va arăta de fapt în memoria cache pentru
‫imagini, și dacă are opțiuni de construcție în ea, va construi acea imagine atunci când utilizați comanda în sus.
‫Nu va construi imaginea de fiecare dată.
‫Va construi doar dacă nu o găsește.
‫Va trebui să utilizați fie compilați docker build pentru a reconstrui imaginile dacă le
‫schimbați, fie puteți utiliza compilația docker până la --build.
‫O să vedem asta într-un minut.
‫Acest lucru este minunat când utilizați Compune pe plan local și aveți imagini pe care doriți să le creați. Poate că nu doriți să utilizați
‫volumul de montare. De fapt, doriți să copiați fișiere în imagine sau ceva în imagine.
‫Comanda dvs. de construire ar putea fi destul de complexă. S-ar putea să aibă unele variabile personalizate de mediu sau
‫să construiască argumente.
‫Apropo, construim argumente, despre care nu am vorbit. Este vorba doar de variabile de mediu care
‫sunt disponibile numai în timpul construcțiilor. Puteți să vă uitați la docs. docher. com pe Dockerfiles
‫și va vorbi despre construirea argumentelor în profunzime.
‫Aici, vom examina un exemplu despre modul în care ați putea să o utilizați local.
‫Sunt în eșantionul de compoziție 3. Puteți vedea aici că am un fișier Docker Compose
‫pre-construit aici.
‫De fapt, am un Dockerfile numit nginx. Dockerfile. Apoi, o config nginx similar cu
‫ceea ce am avut mai devreme, unde de fapt folosim Nginx ca proxy invers pentru site-ul nostru.
‫Dacă intrăm în Docker Compose, puteți vedea cum am proiectat această soluție.
‫Am de fapt două servicii.
‫Una este proxy-ul Nginx ca înainte, iar unul este serverul de web Apache ca înainte.
‫Dar câteva lucruri sunt diferite.
‫În loc de a-mi specifica imaginea implicită pentru Nginx, construiesc de fapt un personalizat.
‫Puteți vedea aici că am dat de fapt niște argumente în care îi spun că Dockerfile pe
‫care trebuie să o folosească este un Dockerfile special numit.
‫Vreau să construiască Dockerfile în directorul curent în care se află. Vreau să numească acea imagine
‫când o construiește,
‫nginx -custom. O să stocheze asta în cache-ul meu local. Apoi, acolo jos, avem un server
‫web care rulează Apache.
‫Ce am făcut aici este că am montat câteva fișiere sursă HTML pe care le am în serverul Apache.
‫Deci, scenariul aici este poate că sunt un dezvoltator
‫de web, am un site static aici,
‫sub acest director HTML, că nu trebuie să-mi fac griji prea mult.
‫Foloseste doar un model de bootstrap.
‫Voi fi editat pe acest loc, în editorul meu aici, dar știu când merg la producție cu asta, de
‫fapt o să stau în spatele unui proxy Nginx.
‫Deci, vreau să imite mediul de producție cât mai mult posibil, la nivel local, doar pentru a mă asigura că
‫am eliminat orice bug-uri sau probleme. În acest caz, vreau
‫acest Nginx și știu că acest Nginx config este cel pe care îl vor folosi
‫pe serverul de producție, așa că o să folosesc asta aici.
‫Aceasta este de fapt aceeași config Nginx ca înainte.
‫Când rulez comanda comenzii de docare, va verifica mai întâi numele
‫cache-ului în cache-ul meu. Dacă nu o găsește, atunci va folosi aceste comenzi de construire aici pentru
‫a căuta dosarul Docker și pentru a-mi construi imaginea. Puteți vedea din acest Dockerfile, este destul de simplu de fapt.
‫Este doar de gând să utilizeze o versiune specifică a Nginx și apoi este doar de gând să copiați un fișier în.
‫O să obțină celelalte informații din acel Nginx config din Docker Hub și apoi
‫va copia în configurația mea Nginx.
‫Dacă vă amintiți într-un exemplu anterior, am făcut o mount mount pentru a obține acest Nginx config prin fișierul
‫nostru de compunere.
‫În acest caz, vrem doar să construim întreaga imagine.
‫Nu avem nevoie să schimbăm această configurație proxy, așa că nu trebuie să-l montează pentru a
‫putea schimba tot timpul.
‫Vreau doar să fugă. Dreapta? Deci, o voi construi. Lăsați-o să stea în memoria cache. Odată ce a fost
‫construită prima dată, nu va trebui să fie foarte bine reconstruită foarte des.
‫Deci voi pleca de acolo.
‫Apoi, când editez și se dezvoltă pe site-ul meu, voi avea această configurație
‫pentru a putea face modificări live. Dacă ne întoarcem aici și o compun pe un docier,
‫să trecem prin ce sa întâmplat.
‫Mai întâi a creat rețeaua.
‫E un lucru normal. Asta face asta.
‫Apoi se vede că serviciul proxy nu are imaginea pe care o caută. Deci o să construiască
‫asta.
‫Deci, scoate Dockerfile-ul și construiește-l exact așa cum ar face o comandă normală de docker.
‫Apoi îmi dă acest sfat utile pentru a-mi spune că a construit imaginea de data aceasta pentru că nu a putut
‫să o găsească.
‫Dar, în viitor, dacă trebuie să schimb acea imagine, va trebui să folosesc built-in-ul computerelor docker sau
‫comenzile de construire a comenzilor de docker-up. Acum că are
‫imaginea, poate crea containerele. Apoi pornește serverul meu web și serverul meu proxy.
‫Dacă totul ar funcționa corect, aș putea să obțin o localitate. A scos aici șablonul meu implicit, care este de
‫fapt un șablon de bootstrap.
‫Se pare că totul funcționează.
‫De fapt, mă duc aici și văd toate jurnalele mele și evident că există o mulțime de active. Există o intrare în jurnal pentru
‫fiecare dintre ele și va trece prin proxy și prin serverul web.
‫Pentru că am legat montarea acelui director pentru editare, mă pot întoarce în editorul meu. În calitate de dezvoltator de web, aș putea intra
‫și poate, știi, să modificați ceva pe site. Poate că voi intra în
‫titlul de start bootstrap, care ar trebui să fie acest titlu mic sus aici.
‫Voi salva dosarul. Apoi, dacă am reîmprospătare, site-ul meu a fost actualizat din cauza că lega monta din nou.
‫Acesta este un exemplu excelent de configurare foarte comună a dezvoltatorilor în care trebuie să creați anumite imagini personalizate
‫la nivel local.
‫De asemenea, trebuie să montați unele fișiere în aplicația dvs., astfel încât să le puteți edita în timpul rulării.
‫Și, bineînțeles, dacă aceasta ar fi trebuit să fie o aplicație bazată pe baze de date, aș adăuga doar un
‫al treilea serviciu aici pentru serverul bazei de date. Apoi, mă întorc și fac curățarea mea.
‫Veți observa că, în mod prestabilit, nu va șterge imaginea.
‫Veți observa în partea de sus aici, avem obiceiul nginx pe care la construit. Dar există o comandă de comandă a
‫docker-ului.
‫Dacă te uiți la ajutor, vezi că există o opțiune rmi care elimină de fapt imaginile pe care le-a
‫construit sau le-ar putea folosi.
‫Această opțiune reală afirmă aici: "eliminați numai imaginile care nu au o etichetă personalizată setată de câmpul
‫imagine. "Un lucru
‫pe care aș putea să-l fac aici dacă aș vrea să fac asta puțin mai automatizat, este că aș putea să iau
‫comanda de imagine chiar acolo. Să eliminăm asta. Apoi vreau să curăț rapid.
‫O să-mi scot imaginea. docker image rm personalizat. După cum puteți vedea, a plecat acolo.
‫In regula. Vreau să compun din nou docul.
‫Și de data asta vom face un -d.
‫Veți observa pe parcursul acestor exemple de Compose că numește de fapt containere, volume și
‫rețele cu numele directorului ca nume de proiect.
‫Acesta este de fapt ceva în Compune unde, pentru a preveni conflictele de
‫nume, acesta va adăuga întotdeauna numele directorului la începutul tuturor activelor astfel încât acestea să nu fie în conflict
‫cu altele.
‫De fapt, puteți schimba numele proxy prin linia de comandă.
‫Dacă te duci să vezi documentația Compose.
‫Dar punctul pe care vroiam să-l fac aici este dacă fac o imagine a docului aici, veți vedea că mi-a făcut
‫numele pentru mine.
‫Deci, din punct de vedere tehnic, nu trebuie să folosesc opțiunea de imagine.
‫Dar dacă vroiam un nume specific pentru asta, ca să-l pot identifica mai târziu, aș putea.
‫Motivul pentru care am adus asta este că este de fapt un pic mai curat, pentru că ceea ce
‫pot face atunci este că dockerul compune în jos, și amintesc în ajutor, a spus că pot folosi un tip rmi. Deci, când o curăț, și îmi place
‫să-mi păstrez mediul Docker curat, pot să fiu local.
‫Ceea ce va face este să ștergeți și acele imagini.
‫Veți vedea aici în partea de jos că a șters imaginea.
‫Nu este ceva ce fac mereu, dar poate ca daca am un proiect mare cu multe imagini personalizate si nu vreau
‫sa explodeze sistemul meu cand nu voi fi in curs de dezvoltare pe acel proiect, voi folosi rmi local
‫, și va ține mereu la curent imaginile personalizate pe care a trebuit să le creeze.
‫Desigur, aici, dacă folosesc totul, va șterge de fapt orice imagine care a fost folosită în acest proiect pe care probabil
‫că nu doriți să o faceți, deoarece în acest caz ar putea să șterge serverul web httpd Apache și ați putea dori ca această
‫imagine să stați în jur pentru o vreme. O.K.
‫Ați învățat multe despre compunerea în această secțiune.
‫Vom folosi Compose pe tot parcursul acestui curs.
‫Vom continua să ne bazăm pe aceste abilități pe măsură ce mergem.