‫Questa conferenza riguarderà l'aggiunta della creazione di immagini nei file Compose in modo che garantisca automaticamente
‫che l'immagine sia pronta per l'uso quando
‫si eseguono i comandi di composizione. Come altri docenti di questa sezione, è
‫necessario avere un buon senso del contenitore Docker e della funzionalità della riga di comando dell'immagine Docker.
‫Un'altra cosa che Compose può fare per te è costruire le tue immagini in fase di runtime. Verranno effettivamente visualizzate nella cache per le immagini
‫e, se sono presenti opzioni di compilazione, verranno create tali immagini quando si utilizza il comando up.
‫Non costruirà l'immagine ogni volta.
‫Lo costruirà solo se non lo trova.
‫È necessario utilizzare la build di composizione del docker per ricostruire le immagini se le
‫si modifica, oppure è possibile utilizzare la finestra mobile comporre -build.
‫Lo vedremo in un minuto.
‫Questo è davvero ottimo per quando usi Compose localmente e hai le immagini che vuoi costruire. Forse non vuoi usare il
‫montaggio del volume. In realtà vuoi copiare i file o qualcosa nell'immagine.
‫Il tuo comando di compilazione potrebbe essere abbastanza complesso. Potrebbe avere alcune variabili d'ambiente personalizzate
‫o generare argomenti.
‫A proposito, costruisci argomenti, di cui non abbiamo parlato. ambiente disponibili solo durante le build.
‫Sono solo le variabili di Puoi guardare i documenti. finestra mobile. com documentazione su Dockerfiles
‫e parlerà approfonditamente degli argomenti di build.
‫Qui, vedremo un esempio di come potresti usarlo localmente.
‫Sono nella directory di esempio 3 di composizione. Potete vedere qui che ho un file Docker Compose
‫pre-costruito qui.
‫In realtà ho un Dockerfile chiamato nginx. Dockerfile. Quindi una configurazione simile a nginx a
‫ciò che avevamo in precedenza, dove attualmente stiamo usando Nginx come proxy inverso per il nostro sito web.
‫Se entriamo nel Docker Compose, puoi vedere come ho architettato questa soluzione.
‫In realtà ho due servizi.
‫Uno è il proxy Nginx come prima, e uno è il server web Apache come prima.
‫Ma un paio di cose sono diverse.
‫Invece di specificare l'immagine predefinita per Nginx, in realtà sto costruendo un'immagine personalizzata.
‫Potete vedere qui che gli ho dato alcuni argomenti in cui sto dicendo che il Dockerfile
‫che deve usare è un Dockerfile con un nome speciale.
‫Voglio che crei quel Dockerfile nella directory corrente in cui si trova. quell'immagine quando la costruisce,
‫nginx -custom.
‫Voglio nominare Lo memorizzerò nella mia cache locale. Poi laggiù in fondo, abbiamo
‫un server web con Apache.
‫Quello che ho fatto qui è che ho effettivamente montato alcuni file sorgente HTML che ho nel server Apache.
‫Quindi lo scenario qui è che forse sono uno
‫sviluppatore web, ho un sito web statico qui,
‫sotto questa directory HTML di cui non ho davvero bisogno di preoccuparmi troppo.
‫Sta usando solo un piccolo modello di bootstrap.
‫qui, ma so che quando andrò in produzione con questo, in realtà sarà seduto dietro un proxy Nginx.
‫Ne parlerò qui a livello locale, nel mio editor
‫Quindi, voglio emulare l'ambiente di produzione il più possibile, localmente, solo per assicurarmi di
‫aver eliminato bug o problemi. In questo caso, voglio
‫questo Nginx, e so che questa configurazione di Nginx è quella che
‫useranno sul server di produzione, quindi la userò qui.
‫Questa è in realtà la stessa configurazione Nginx di prima.
‫Quando eseguo il comando di composizione del docker, si verificherà innanzitutto il nome
‫di questa immagine nella mia cache. compilazione per cercare il Dockerfile e quindi creare la mia immagine.
‫Se non lo trova, utilizzerà qui questi comandi di Puoi vedere da questo Dockerfile, in realtà è piuttosto semplice.
‫Utilizzerà solo una versione specifica di Nginx e quindi copierà un file.
‫Otterrà il resto delle sue informazioni da quella configurazione di Nginx da Docker Hub e
‫poi copierà nella mia configurazione di Nginx.
‫Se ti ricordi in un esempio precedente, in realtà abbiamo fatto un mount bind per ottenere questa configurazione di Nginx attraverso
‫il nostro file di composizione.
‫In questo caso, vogliamo solo che costruisca l'intera immagine.
‫cambiare questa configurazione proxy, quindi non ho davvero bisogno di montarlo in modo che possa cambiarlo tutto il tempo.
‫Non abbiamo davvero bisogno di
‫Voglio solo che funzioni. Destra? Quindi, lo costruirò. Lascia che si sieda nella cache delle immagini. Una volta che è
‫stato creato la prima volta, non sarà necessario ricostruirlo molto spesso.
‫Quindi me ne andrò.
‫Poi, quando sto modificando e sviluppando sul mio sito web, avrò questa configurazione in modo
‫che io possa fare delle modifiche dal vivo. Se torniamo qui e faccio un docker comporre, passiamo
‫attraverso quello che è successo.
‫Inizialmente ha creato la rete.
‫Questa è una cosa normale. Lo fa.
‫Quindi si vede effettivamente che il servizio proxy non ha l'immagine che sta cercando. Quindi lo
‫costruirà.
‫Quindi estrarrà il Dockerfile e lo costruirà proprio come farebbe un normale comando di creazione di una finestra mobile.
‫Quindi mi sta dando questo suggerimento utile per farmi sapere che questa volta ha costruito l'immagine perché non
‫riusciva a trovarla.
‫Ma in futuro, se avessi bisogno di cambiare immagine, avrò bisogno di usare la finestra di composizione del
‫docker o la finestra mobile comporre i comandi --build. effettivamente creare i contenitori.
‫Ora che ha l'immagine, può Quindi sta avviando il mio server web e il mio server proxy.
‫Se tutto funziona correttamente, dovrei essere in grado di ottenere un host locale. Ha tirato fuori il mio modello predefinito qui, che è
‫in realtà un modello di bootstrap.
‫Sembra che tutto funzioni.
‫In realtà, vado qui e posso vedere tutti i miei log in arrivo e ovviamente ci sono un sacco di risorse. C'è una voce di registro per
‫ognuno e passerà attraverso il proxy e attraverso il server web.
‫Poiché ho montato questa directory per il montaggio, posso effettivamente tornare al mio editor. Come sviluppatore web, potrei entrare e forse,
‫sai, modificare qualcosa sul sito web. piccolo titolo qui sopra.
‫Forse andrò all'inizio del titolo di bootstrap, che dovrebbe essere questo
‫Mi limiterò a salvare quel file. Quindi, se aggiorno, il mio sito web viene aggiornato a causa di quel bind mount di nuovo.
‫Questo è un ottimo esempio di una configurazione di sviluppo molto comune in cui è necessario creare alcune
‫immagini personalizzate localmente.
‫È inoltre necessario montare alcuni file nell'applicazione in modo da poterli modificare in fase di runtime.
‫E, naturalmente, se questa dovesse essere un'applicazione supportata da database, aggiungerei un terzo servizio
‫qui sotto per il server del database. Quindi, tornerò e fare la mia pulizia.
‫Noterai che, per impostazione predefinita, non verrà effettivamente cancellata quell'immagine.
‫Noterai in alto qui, abbiamo l'abitudine di nginx che ha costruito. Ma c'è un comando per la composizione della
‫finestra mobile.
‫Se si guarda l'aiuto, si nota che esiste un'opzione rmi che rimuove effettivamente le immagini che potrebbe aver
‫creato o potrebbe essere in uso.
‫C'è questa opzione reale qui dice, 'rimuovere solo le immagini che non hanno un tag personalizzato impostato dal
‫campo immagine. "Una cosa
‫che potrei fare qui se volessi rendere questo un po 'più automatico, è che potrei semplicemente eliminare quel
‫comando immagine proprio lì. Rimuoviamolo. Allora voglio ripulire molto velocemente. mia immagine.
‫Sto solo per rimuovere la immagine mobile immagine personalizzata Come puoi vedere, è andato lì.
‫Tutto ok. Voglio fare la finestra mobile comporre di nuovo.
‫E questa volta faremo un -d.
‫Si noterà in tutti questi esempi di Compose, che in realtà identifica contenitori, volumi e reti
‫con il nome della directory come nome del progetto.
‫Questo è in realtà qualcosa in Compose, dove, per evitare conflitti tra nomi,
‫in realtà aggiungerà sempre il nome della directory all'inizio di tutte le risorse in modo che non entrino in
‫conflitto con altre.
‫È possibile modificare il nome proxy tramite la riga di comando.
‫Se vai controlla la documentazione di Compose.
‫Ma il punto che volevo fare qui è che se faccio un'immagine docker qui, vedrai che in realtà ha chiamato la
‫mia immagine per me.
‫Quindi tecnicamente non devo usare quell'opzione immagine.
‫Ma se volessi un nome specifico per poterlo identificare in seguito, potrei.
‫Il motivo per cui stavo facendo questo è in realtà un po 'più pulito perché quello che
‫posso fare è compilare la finestra mobile e ricordare nell'aiuto, ho detto che potrei usare un tipo rmi. il mio ambiente Docker, posso farlo rmi local.
‫Quindi, quando lo pulisco, e mi piace mantenere pulito
‫Quello che farà in realtà è eliminare anche quelle immagini.
‫Vedrai qui in basso che ha cancellato l'immagine.
‫Non è qualcosa che faccio sempre, ma forse se ho un grande progetto con molte immagini personalizzate e
‫non voglio che faccia esplodere il mio sistema quando non sto sviluppando su quel progetto, userò
‫il rmi local e terrà sempre traccia delle immagini personalizzate che ha dovuto creare.
‫realtà eliminerà ogni immagine che è stata usata in questo progetto e che potresti non voler fare perché in
‫questo caso, potrebbe cancellare il server web httpd Apache, e potresti volere che quell'immagine stare in giro per un po '.
‫Naturalmente, qui se uso il tutto, in OK.
‫Hai imparato molto su Compose in questa sezione.
‫Utilizzeremo Compose per tutto il resto del corso.
‫Continueremo a sviluppare queste abilità mentre andiamo.