‫In regula. Să examinăm câteva exemple de Dockerfile.
‫În depozitul nostru pe care l-ați descărcat de pe Github, să mergem în eșantionul Dockerfile numărul 2.
‫De data aceasta avem de fapt două fișiere.
‫Avem dosarul Docker. Și acum avem un indice. html.
‫Super simplu. Salut Lume. HTML.
‫Nu este foarte important să înțelegeți codul HTML.
‫O să-l copiem în imaginea containerului pe care îl construim.
‫Dacă ne uităm la fișierul Docker, veți vedea în acest caz că de fapt folosim comanda Nginx ca comandă
‫FROM.
‫Nu ne construim propriul Nginx, pentru că, ideal, dacă puteți folosi o imagine oficială pentru a obține o
‫treabă de la Docker Hub, atunci vă va fi mult mai ușor să mențineți acest fișier Docker și să
‫îl păstrați bine.
‫În scenarii mai simple, destul de des imaginea oficială este de lucru. Dar, pe măsură ce creșteți și adăugați complexitate mediului
‫și sistemelor dvs., probabil veți găsi că trebuie să adăugați software personalizat suplimentar sau să schimbați modul
‫în care acesta pornește sau să adăugați scripturi în așa fel încât să ajusteze configurația.
‫Dar când încep un nou proiect greenfield sau dacă convertesc o aplicație veche, întotdeauna încep cu
‫imaginile oficiale de la Docker Hub. Apoi, după ce am lovit câteva blocaje și nu mai
‫reușesc să folosesc acea imagine, aș putea să mă întorc la Docker Hub și să arunc o privire și
‫să văd dacă există ceva obișnuit acolo, care este foarte popular, că pot avea încredere, vezi dacă o să-mi rezolve problema.
‫Dar nu e nimic în neregulă cu construirea propriului tău.
‫Este doar mai multă muncă și mai multă întreținere în timp.
‫Deci, aici este foarte simplu. Avem trei stânci.
‫Ați văzut-o înainte de. Și de data aceasta avem WORKDIR.
‫Acum, într-adevăr se execută o modificare a directorului de spațiu cd. Deci, ați putea fi tentați să utilizați comanda de rulare și doar
‫tastați rulați cd în acest director și apoi faceți câteva lucruri. Dar, într-adevăr, cea mai bună practică pentru
‫Dockerfiles este de a folosi întotdeauna o staniu WORKDIR separată pentru fiecare schimbare de directoare.
‫Deci, dacă fișierul dvs. devine un mic complex și trebuie să vă deplasați înainte și înapoi în containerul
‫dvs. pentru a face lucruri în timp ce se construiește, întotdeauna doriți să utilizați WORKDIR deoarece este mult mai ușor să descrieți
‫în Dockerfile ceea ce faceți.
‫În acest caz, ceea ce facem de fapt aici este schimbarea la directorul implicit Nginx
‫pentru fișierele sale HTML.
‫În configurația implicită de pe Docker Hub, Nginx acționează la fel ca un server web și doar
‫difuzează fișiere statice chiar de pe discul containerului.
‫Ultima stanza pe care o avem aici este copia. Și aceasta este stanza pe care o veți folosi întotdeauna
‫pentru a copia codul sursă de la mașina dvs. locală sau serverele dvs. de construire în imaginile dvs. din container.
‫În acest caz, luăm doar indicele nostru simplu. html și suprascriem fișierul din directorul implicit Nginx,
‫astfel încât acesta să fie pagina noastră de pornire personalizată pentru serverul web.
‫Înainte de a construi acest lucru, veți observa că ne lipsesc stanzas necesare, cum ar fi cmd.
‫Deci, cum putem să scăpăm de asta?
‫Există deja un cmd specificat în imaginea FROM.
‫Și când folosim OD, moștenim totul de la Dockerfile pe care-l "dăm", dacă e chiar un cuvânt.
‫Acesta este modul în care puteți alinia împreună fișierele Docker, astfel încât imaginile să depindă de alte
‫imagini care depind de alte imagini.
‫In regula. Să vedem cum funcționează acest lucru.
‫Înainte de a construi acest lucru, să ne reamintim rapid ceea ce face un server implicit Nginx.
‫Hai să facem un container rapid de docking-run-p 8080, și nu vom avea nevoie de acest lucru atât de mult, așa că vom face un -rm, astfel încât
‫va șterge la renunțare. Nu ne pasă de nume. Vom
‫merge la Nginx. Dacă navigăm la browserul nostru și doar tastăm localhost,
‫vedem pagina index implicită Nginx.
‫O.K.
‫Să ne amintim asta și apoi să renunțăm la acest container și acum vom
‫construi versiunea noastră de Nginx cu fișierul nostru de cod sursă suplimentar.
‫O.K.
‫Acesta ar trebui să meargă foarte repede.
‫Observi că au durat doar câteva secunde. Asta pentru că am avut deja Nginx în memoria cache a imaginii noastre. Și tot ce
‫rulează era copierea unui fișier foarte mic și schimbarea directorului de lucru.
‫Acum să conducem comanda exactă pe care tocmai am fugit-o pentru Nginx. Numai de data aceasta, vom
‫folosi noua imagine pe care tocmai am construit-o.
‫Treceți la browserul nostru, și reîmprospătați, și minunat.
‫Indicele HTML personalizat rulează acolo și funcționează containerul nostru.
‫Dacă facem o imagine rapidă, putem vedea ultima noastră imagine de sus.
‫Dacă am vrut să trimitem acest lucru la Docker Hub, funcționează exact așa cum am făcut-o mai devreme.
‫Trebuie doar să îl re-etichetăm. Așa că putem face eticheta de imagine docker.
‫Dacă vă aduceți aminte de comanda de ajutor, putem examina formatul și este întotdeauna cel pe
‫care îl etichetați și eticheta pe care dorim să o numim apoi. Deci, tag-ul de imagini de andocare nginx cu html mai recent.
‫Și atunci va trebui să o numesc bretfisher ... ca asta.
‫Apoi, dacă fac din nou o imagine de andocare, veți vedea că primele două linii sunt din nou identice cu aceeași
‫imagine și doar etichetate diferit.
‫Acum aș putea să fac o împingere a docker-ului cu depozitul și eticheta și aș putea să-l ridic în Docker Hub.