‫Tutto ok. Diamo un'occhiata ad alcuni altri esempi di Dockerfile.
‫Nel nostro repository che hai scaricato dal mio Github, passiamo al numero 2 del Dockerfile.
‫Questa volta, in realtà abbiamo due file.
‫Abbiamo il Dockerfile. E ora abbiamo un indice. html.
‫Super semplice. Ciao mondo. HTML.
‫Non è molto importante capire l'HTML.
‫Lo coperemo solo nella nostra immagine del contenitore mentre lo stiamo costruendo.
‫Se guardiamo il Dockerfile, vedremo su questo che stiamo effettivamente usando Nginx come comando
‫FROM.
‫Non stiamo costruendo il nostro Nginx perché idealmente, se puoi usare un'immagine ufficiale per portare
‫a termine il lavoro da Docker Hub, sarà molto più semplice per te mantenere questo Dockerfile
‫e farlo funzionare bene.
‫Negli scenari più semplici, molto spesso l'immagine ufficiale è lavoro. Ma man mano che cresci e aggiungi complessità al
‫tuo ambiente e ai tuoi sistemi, probabilmente troverai che devi aggiungere software personalizzato aggiuntivo, o cambiare
‫il modo in cui inizia, o aggiungere script in modo che modifichi la configurazione.
‫Ma quando sto iniziando un nuovo progetto greenfield, o se sto convertendo alcune vecchie app, comincio sempre
‫con le immagini ufficiali di Docker Hub. Poi, una volta che ho colpito alcuni roadblock e non sono
‫più in grado di usare quell'immagine, potrei tornare su Docker Hub e dare un'altra occhiata e vedere se c'è qualcosa
‫di personalizzato là fuori che è molto popolare, di cui posso fidarmi, e guardare e vedi se risolverà il mio problema
‫Ma non c'è niente di sbagliato nel costruire il tuo.
‫È solo più lavoro e più manutenzione nel tempo.
‫Quindi qui è super semplice. Abbiamo tre stanze.
‫Hai già visto il FROM. E questa volta abbiamo il WORKDIR.
‫Ora, in pratica, è sufficiente eseguire una modifica della directory dello spazio del cd. Quindi potresti essere tentato di usare il comando run e basta
‫scrivere cd in questa directory e poi fare alcune cose. Ma la pratica migliore per Dockerfiles è
‫di utilizzare sempre una stanza WORKDIR separata ogni volta che si cambiano le directory.
‫Quindi, se il tuo file diventa un po 'complesso e devi spostarti avanti e indietro nel tuo
‫contenitore per fare le cose mentre sta costruendo, vuoi sempre usare il WORKDIR perché è molto più facile descrivere nel
‫Dockerfile quello che stai facendo.
‫In questo caso, quello che stiamo facendo qui è che stiamo cambiando nella directory Nginx predefinita
‫per i suoi file HTML.
‫Nella configurazione predefinita su Docker Hub, Nginx funziona come un server Web e serve
‫solo file statici direttamente dal disco contenitore.
‫L'ultima stanza qui, abbiamo, è la copia. E questa è la stanza che userete sempre per
‫copiare il codice sorgente dal computer locale o dai server di compilazione, nelle immagini del contenitore.
‫In questo caso, stiamo semplicemente prendendo il nostro semplice indice. html e stiamo sovrascrivendo il file nella directory predefinita
‫Nginx in modo che sia la nostra home page personalizzata per il server web.
‫Prima di costruire questo, noterai che mancano le stanze richieste, come il cmd.
‫Quindi, come possiamo farcela?
‫Bene, c'è già un cmd specificato nell'immagine FROM.
‫E quando usiamo il FROM, ereditiamo tutto dal Dockerfile che stiamo 'froming', se è anche una parola.
‫In questo modo è possibile unire insieme i Dockerfiles in modo che le immagini dipenda da
‫altre immagini che dipendono da altre immagini.
‫Tutto ok. Vediamo come funziona.
‫Prima di crearlo, ricordiamoci rapidamente cosa fa un server Nginx predefinito.
‫Facciamo un contenitore docker veloce esegui -p 8080, e non avremo bisogno di questo molto a lungo, quindi faremo un --rm in
‫modo che cancellerà all'uscita. Non ci interessa il nome. Stiamo solo
‫andando a correre Nginx. Se saliamo sul nostro browser e digitiamo localhost,
‫vediamo la pagina indice Nginx predefinita.
‫OK.
‫Ricordiamolo, e poi lasciamo questo contenitore e ora costruiremo la nostra
‫versione di Nginx con il nostro file di codice sorgente aggiuntivo.
‫OK.
‫Questo dovrebbe davvero andare molto veloce.
‫Noti che ci sono voluti solo pochi secondi. Questo perché avevamo già Nginx nella nostra cache di immagini. E tutto ciò che era
‫in esecuzione era copiare un file molto piccolo e cambiare la directory di lavoro.
‫Ora eseguiamo esattamente il comando che abbiamo appena lanciato per Nginx. Solo questa volta, useremo questa
‫nuova immagine che abbiamo appena creato.
‫Passa al nostro browser, e aggiorna, e alla grande.
‫Il nostro indice personalizzato HTML è in esecuzione lì e il nostro contenitore funziona.
‫Se facciamo un'immagine veloce ls, possiamo vedere la nostra ultima immagine lassù in alto.
‫Se in realtà volevamo inviare questo fino a Docker Hub, funziona allo stesso modo di prima.
‫Abbiamo solo bisogno di ricodificarlo. Quindi possiamo fare il tag immagine docker.
‫Se ricordi il comando help, possiamo esaminare il formato ed è sempre quello
‫che stiamo taggando e il tag che vogliamo venga chiamato. Quindi nGex con tag immagine docker con html più recente.
‫E poi dovrò chiamarlo bretfisher ... come quello.
‫Quindi se faccio di nuovo un'immagine docker ls, vedrai che quelle due righe in alto hanno di nuovo lo stesso ID immagine e
‫sono state taggate in modo diverso.
‫Ora potevo fare una finestra mobile con quel repository e tag, e ho potuto farlo su Docker Hub.