‫In precedenza abbiamo parlato del file YAML di Docker Compose e in questa conferenza parleremo
‫della riga di comando di composizione. I requisiti per questa lezione sono come il resto per questa sezione
‫in cui hai veramente bisogno di conoscere immagini e contenitori, e come usarli e i concetti che li circondano dalle sezioni precedenti, in modo
‫che tu possa usare tutti quelli all'interno del comando di composizione e dello YAML file. Lo strumento della riga di comando
‫di Docker Compose è in realtà separato dallo strumento Docker.
‫In realtà è un binario separato. Se sei su Docker per Windows o Docker per Mac,
‫in realtà viene fornito in dotazione.
‫Se usi anche la casella degli strumenti su Windows 7, si raggruppa con quello.
‫Ma se sei su Linux, devi scaricarlo separatamente e puoi farlo su GitHub. com / docker / compose, ma
‫puoi anche cercarlo su Google, e ci sarà un link nei riferimenti
‫per questa sezione.
‫Ma dovrei dichiarare molto rapidamente che non è progettato per essere uno strumento di produzione.
‫È super ideale per lo sviluppo locale e per testare cose molto velocemente che altrimenti potrebbero essere complesse per
‫digitare una serie di comandi dalla riga di comando. Due comandi comuni che useremo saranno la composizione
‫del docker, che è molto probabilmente quello che si sta digitando il 90% delle volte.
‫È uno sportello unico.
‫È fondamentalmente un singolo comando per fare tutto nel file di composizione, compresa la creazione di volumi, la creazione di reti, l'avvio
‫di tutti i contenitori con tutte le opzioni di configurazione. Quindi per ripulire quando hai finito, la
‫finestra
‫mobile si compone, cosa che molte persone in realtà dimenticano di fare, in
‫realtà puliscono dopo di te. Si libererà dei contenitori, rimuoverà le reti e i volumi che non sono più necessari.
‫Ti permette, con questi due comandi, di saltare rapidamente dentro e fuori da diversi ambienti per lo sviluppo.
‫Questo è il punto in cui ottengo davvero l'attenzione degli sviluppatori che sono abituati a usare vagrant
‫up e altri strumenti per personalizzare gli ambienti complessi di cui hanno bisogno per lo sviluppo.
‫Una volta mostrati Docker Compose e il file di composizione e quanto è facile da usare insieme a un
‫Dockerfile, inizia davvero a fare clic per loro che questo potrebbe essere un modo migliore e un modo più affidabile per configurare
‫i loro ambienti.
‫E non richiede il tempo necessario per configurare macchine virtuali diverse
‫o la complessità della gestione di un ambiente di macchina virtuale.
‫loro sistema, e le giuste macchine virtuali scaricate, e i giusti componenti aggiuntivi e tutte le cose che normalmente dovrebbero semplicemente creare
‫un ambiente replicato per, con Docker Compose, è facile come clonare l'ambiente che ha il tuo file
‫di composizione da qualche repository da qualche parte e quindi eseguire il comando di composizione del docker.
‫Solo per darti un piccolo assaggio, se tu avessi
‫un progetto in cui avevi il tipico processo di onboarding degli sviluppatori, si trattava di imparare come ottenere
‫gli strumenti giusti per il
‫Può essere davvero così facile.
‫Facciamo un salto e giochiamo. Sono nella directory di esempio 2 di composizione. La directory di esempio 1 per
‫la compilazione era semplicemente degli esempi visivi che abbiamo mostrato nell'ultima lezione.
‫Ma in questo caso, saremo in grado di eseguire effettivamente questo e ottenere un output veloce.
‫Compilerò solo una finestra mobile.
‫Beh, in realtà prima di farlo, lascia che ti mostri quello che è.
‫Questo ha due servizi, o due contenitori, e il primo è un server Nginx che è configurato
‫come proxy in questo caso.
‫E sarà in ascolto sulla mia porta 80 sulla mia macchina locale.
‫Noterete che c'è un comando volume lì dove ho effettivamente fatto un mount bind su un file in questa directory
‫chiamato un file di configurazione nginx, ed è davvero un file molto semplice.
‫Non è necessariamente importante sapere come funziona ancora quel file. Mostra solo come, in questo caso, sto
‫effettivamente prendendo un file sul mio ambiente locale. che memorizza questi file di configurazione per me.
‫Diciamo che questa directory è un repository Git Mi permette di mappare quel file nel contenitore e in effetti, alla
‫fine, lo vedremo dire "ro", che significa solo lettura, il che significa che non posso cambiarlo nel contenitore.
‫Questo non è necessariamente richiesto qui. Volevo solo mostrarti che è così
‫che lo faresti in questo caso. Quel file di configurazione in realtà sta
‫dicendo a Nginx, "invece di
‫essere un server web, vorrei che tu fossi un proxy inverso e sederti di fronte a un altro server",
‫che in questo caso chiamiamo il nostro server web, con il suo servizio nome e sta eseguendo il server Apache 2, che è l'immagine
‫httpd dal repository di immagini ufficiale su Docker Hub.
‫Puoi anche vedere, in alto, che ho specificato una versione qui. Ecco come lo farei.
‫All'interno della linea dell'immagine.
‫Quindi, quello che dovrebbe succedere è quando scrivo questa finestra mobile, che dovrebbe avviare entrambi i contenitori. Dovrebbe creare una rete
‫privata per entrambi.
‫Collegherà automaticamente quel file.
‫Aprirà la porta e inizierà lo scarico dei log sul mio schermo.
‫Vedrai come, disse, 'creando questi due contenitori. "In realtà sta
‫creando la rete.
‫Noterai nel mio file che non ho specificato un'area di rete o un'area di volumi perché non
‫sono effettivamente necessari.
‫Sono necessari solo se ho bisogno di fare alcune cose personalizzate nella rete, come forse cambiare gli indirizzi IP predefiniti
‫o cambiare il driver di rete che viene utilizzato.
‫O nel caso dei volumi, posso creare volumi con nome, o usare un driver di volume diverso, e
‫ne parleremo più avanti nelle sezioni avanzate.
‫Solo per quello che sai, è così che questi file possono essere semplici.
‫Normalmente non hai bisogno di tutta quella roba.
‫Queste funzionalità ci sono se ne hai bisogno, ma di solito questi comandi molto semplici come questo ti
‫faranno andare avanti.
‫Cosa ho fatto? Questo è ora il mio server Apache e il mio server Nginx.
‫Noterai che i log sono effettivamente colorati qui.
‫Questa è una caratteristica essenziale di Compose, che non si ottiene necessariamente
‫con Docker, poiché registra tutti i contenitori in esecuzione sullo schermo in primo piano.
‫Posso sempre fare la stessa cosa che faccio con Docker ed eseguire docker
‫comporre up -d, che verrà eseguito in background. testando le cose a livello locale, che ho i miei registri direttamente sullo schermo.
‫Ma è bello vedere quando sto sviluppando o
‫Se salgo sul mio browser e poi vado su localhost, vedrai che dice: "Funziona. "Questo è in realtà il
‫server Apache che risponde, non il server Nginx.
‫Il traffico sta effettivamente attraversando il proxy inverso Nginx.
‫Sta ripetendo il traffico sul server Apache. Il server Apache risponde con il suo file
‫HTML di base predefinito perché non abbiamo modificato nulla.
‫Quindi il Nginx me lo ripete di nuovo.
‫Quindi, è il tuo server web di base, configurazione proxy web.
‫Puoi dire che il traffico ha colpito entrambi. In realtà funzionano attraverso il proxy
‫perché il proxy
‫è in realtà un colore diverso qui. I log vengono pompati qui con un colore casuale per ogni contenitore nel mio setup in
‫modo che io possa vedere facilmente cosa sta succedendo.
‫Se eseguo il refresh più volte, visualizzerai il traffico. Quindi colpisce prima il proxy e quindi il
‫server Web di back-end.
‫Se avessi voluto fermarlo qui, avrei colpito Control c per fermare la composizione nel mio schermo.
‫Potrei effettivamente eseguirlo di nuovo con -d per eseguirlo in background.
‫Puoi vedere qui che posso aggiornarlo ed è ancora lì. Posso fare una finestra mobile per comporre i log per vedere lo stesso output
‫di log che ho visto qualche tempo fa.
‫Molti dei comandi a cui potresti essere abituato in Docker sono anche in Docker Compose. In realtà ciò che Compose
‫sta facendo è che sta parlando con l'API Docker in
‫background per conto della CLI di Docker. È un po 'come un sostituto per la CLI di Docker che sta
‫ancora parlando con l'API del server Docker nel back-end.
‫Ovviamente, l'ottimo aiuto qui, l'aiuto di comporre docker, mi mostra tutti i comandi che posso eseguire.
‫comando docker usando solo il contesto della configurazione del file di composizione.
‫Vedrete che molti di questi sembrano davvero familiari perché sono l'equivalente del
‫Voglio pulire tutto questo perché sono ancora in esecuzione. Posso fare un docker per comporre ps qui, che mi mostrerà che entrambi
‫i miei contenitori sono in esecuzione.
‫Posso fare una finestra mobile comporre in alto per elencare effettivamente tutti i servizi in esecuzione all'interno di essi
‫in un output formattato.
‫E 'carino
‫Quindi, finalmente, posso fare una finestra mobile per fermarmi e ripulire le mie cose che ho appena iniziato.
‫Vedrai che mi sta dicendo che cosa ha fatto lì. Pulito tutto.
‫Quindi, fantastico.
‫Questo è solo un piccolo assaggio.
‫Utilizzeremo Docker Compose molto durante il resto del corso per lo
‫sviluppo locale e le attività di testing. Quindi continueremo a utilizzare i file Docker Compose mentre passiamo
‫ai problemi di produzione per il modo in cui distribuiamo ambienti complessi con un semplice file YAML.