‫In questa sezione, abbiamo parlato molto di Swarm. Swarm, Stacks e Secrets sono una sorta di trilogia di fantastiche
‫funzionalità che possono davvero rendere le cose molto più facili nella produzione per noi.
‫Voglio mostrarti come potrebbe essere se effettivamente prendessi i tuoi file di Compose, organizzali in un paio
‫di modi, e questo è
‫ciò che sostanzialmente definisco vivendo il sogno.
‫Si scopre che puoi effettivamente utilizzare un singolo file per fare un sacco di cose, ma a volte
‫la tua complessità aumenta e avrai bisogno di più file Compose.
‫Voglio solo correre velocemente.
‫In realtà non devi farlo da solo se non vuoi. Sto solo per mostrarti un esempio di
‫come questi file di Compose potrebbero funzionare insieme per costruire il tuo ambiente mentre vai.
‫In questo scenario, useremo la finestra mobile comporre per il nostro ambiente di sviluppo locale.
‫Utilizzeremo una finestra mobile per comporre config e file per il nostro ambiente CI per eseguire test di integrazione.
‫Poi, quando saremo in produzione, useremo quei file per la distribuzione dello stack di docker
‫per distribuire effettivamente l'ambiente di produzione con uno stack. Quindi, sono sulla mia macchina locale e useremo l'esempio precedente
‫dello scenario Drupal, con un server di database e un front-end web.
‫Abbiamo il Dockerfile che abbiamo usato nei nostri precedenti incarichi. personalizzata, ma semplice, con un modello.
‫Stiamo ricostruendo una configurazione drupal
‫Quindi avremo questo file di composizione predefinito.
‫Questo è chiamato
‫override, quello che stiamo per fare. Un override è il punto in cui ho il file standard
‫Docker Compose e imposta i valori di default uguali su tutti i miei ambienti.
‫Quindi, ho questo file di override che, per impostazione predefinita, Docker Compose, se viene chiamato questo nome
‫esatto, componi la finestra mobile. oltrepassare. yml, lo porterà automaticamente ogni volta che compongo una finestra mobile.
‫locale perché vogliamo davvero che i comandi digitati a mano che andremo a digitare siano più semplici localmente.
‫Vedrai che in questo scenario, stiamo assumendo lo sviluppo
‫Normalmente nel tuo ambiente CI, è tutto automatizzato, quindi non ci interessa davvero se quei comandi sono
‫un po 'più lunghi.
‫Ma vogliamo davvero che localmente sia la semplice finestra mobile a comporre.
‫La cosa interessante è che Docker Compose leggerà questo file automaticamente e
‫lo applicherà sopra o sopra, qualsiasi impostazione nel file yml di Docker Compose.
‫E così qui, nota
‫che non ho il nome dell'immagine, perché è già specificato qui. il Dockerfile in questa directory corrente.
‫In questo file di override, sovrascrivo dicendo che voglio costruire l'immagine localmente usando
‫Voglio creare una porta su 8080 per lo sviluppo locale. E sto preparando alcuni volumi, e noterai anche che ti ho dato un
‫esempio qui di un bind mount, dove potrei fare un tema personalizzato. E voglio montare il mio tema sul mio
‫host nel contenitore come abbiamo fatto nelle sezioni precedenti, in modo che io possa cambiarlo
‫localmente e vederlo subito sul server.
‫E a proposito, per questo esempio, in realtà non so come sviluppare temi in Drupal.
‫Non sono proprio sicuro che se cambierò un file lì, verrà riflesso automaticamente.
‫nel web, tipicamente questo è il modo in cui lo faresti senza dover interrompere e avviare la composizione ogni volta.
‫Volevo solo mostrare un esempio di come quando stai facendo lo sviluppo Qui sotto, sotto Postgres, abbiamo la variabile di
‫ambiente e le impostazioni Segrete come prima. Abbiamo i volumi definiti, e vedremo in fondo,
‫in realtà ho
‫il segreto basato su file perché quando stiamo facendo lo sviluppo locale, dobbiamo usare il segreto basato
‫su file.
‫Le cose si fanno un po 'interessanti quando guardo questo prod, o test dei file. Il modo in cui funzionerà
‫è, ricorda che il. oltrepassare. yml viene automaticamente rilevato dalla riga di
‫comando di Docker Compose. specificarli manualmente.
‫In prod o test, dovrò
‫Quindi per il test, dovremo usare il comando -f.
‫Se ti ricordi da precedenti sezioni, il -f è quando facciamo una finestra mobile comporre che vogliamo
‫specificare un file personalizzato. Te lo mostrerò tra un minuto.
‫Quindi, in produzione, dato che non avremo effettivamente la riga di comando Docker Compose su
‫un server di produzione, quello che faremo qui è che useremo un comando di configurazione compa docker.
‫Il comando config produrrà in realtà un risultato schiacciando insieme, o combinando, l'output di più
‫file di configurazione.
‫Quindi sarà davvero fantastico.
‫Davvero veloce, il file di test ha solo la drupal e il postgres.
‫Immaginate se questa fosse la vostra soluzione Jenkins CI o Codeship CI, in cui voglio che crei l'immagine
‫ogni volta che impegno il mio codice, e voglio chiamarla così, e voglio che sia su
‫questa porta a scopo di test. Quindi userò una password falsa. Ma non ho bisogno di definire nessuno dei volumi perché
‫non ho intenzione di provare effettivamente a mantenere i dati del volume con nome perché di nuovo, è solo una piattaforma CI.
‫Non appena supera i test o fallisce i test, si sbarazzerà di tutto.
‫semplicemente database che vengono da un repository Git personalizzato o forse sono un download FTP.
‫Quindi, in questo scenario, potreste vedere che in realtà ho questo scenario di dati campione dove
‫forse nella vostra soluzione CI, vi sono O qualcosa accade durante l'inizializzazione del tuo
‫CI in cui effettivamente scarica un file di database. E invece di dover creare il nostro database ogni
‫volta che eseguiamo test CI, montiamo questa directory di dati di esempio in cui dovrebbero essere i nostri
‫dati postgres.
‫In questo modo, potremmo garantire di avere gli stessi dati di esempio ogni volta che eseguiamo un test CI.
‫Non ho intenzione di approfondire ulteriormente. Volevo solo dimostrare che questo potrebbe essere il modo
‫in cui questo file per CI sarebbe diverso.
‫Quindi, in produzione, abbiamo tutti i nostri normali problemi di produzione. Stiamo specificando i volumi per
‫i nostri dati specifici. Stiamo specificando il nostro segreto. E nota in basso, abbiamo il segreto esterno.
‫Perché avremo messo il segreto già tramite la riga di comando come abbiamo fatto
‫nel compito precedente.
‫Il punto qui è che tutte e tre queste configurazioni sono diverse in qualche modo, ma
‫si riferiscono tutte alla configurazione principale, o alla configurazione di base, che definisce solo i due servizi e le loro immagini.
‫Puoi vedere qui. Ecco un promemoria di come appare.
‫Escludiamo questo ed eseguiamo un paio di comandi.
‫Se guardo in questa directory, vedrai che ho il file di base e poi i tre file di override.
‫Ancora una volta, ricorda, che l'override. yml è l'impostazione predefinita.
‫Se faccio una finestra mobile componga, ciò che effettivamente farà qui è usare la finestra mobile-comporre. yml prima, e quindi
‫sovrappone l'override. yml uno in cima. Voglio mettere un -d in modo
‫che possiamo dare una rapida occhiata dopo che è iniziato. Vado a fare una finestra mobile per controllare l'immagine drupal.
‫E quello che volevo mostrarti era qui, ha tutte le montature elencate.
‫Quindi sappiamo che è stato necessario il file di override perché il file di override era il punto in cui sono stati definiti
‫tutti questi supporti.
‫Quindi sappiamo che l'ha raccolto.
‫Ovviamente, se non prendesse quello di base, non saprebbe nemmeno quali immagini utilizzare,
‫quindi ci farebbe davvero lamentare e dire che il file Compose era incompleto.
‫Quello ha funzionato.
‫Facciamo un down molto veloce.
‫Se avessimo effettivamente il comando di cui avevamo bisogno per la nostra soluzione CI, ciò che avremmo
‫dovuto fare sulla nostra soluzione CI era assicurarsi che Docker Compose fosse lì, installato e disponibile in modo da
‫poter eseguire comandi di composizione docker. base che deve sempre essere il primo.
‫Quindi possiamo specificare -f, e quindi l'ordine delle f è il file
‫Quindi la finestra mobile comporrà yml, quindi il test di composizione del docker.
‫Se lo abbiamo fatto con un up alla fine e un -d, e poi sono andato a ispezionare quella stessa drupal,
‫noterete che non ci sono attacchi bind.
‫Sono completamente mancanti perché nel file di test, non abbiamo specificato quelli.
‫In realtà non avevamo bisogno di Drupal per salvare le informazioni perché sarebbe stato gettato via alla
‫fine della nostra esecuzione di CI.
‫E poi terzo, abbiamo la configurazione di produzione.
‫La configurazione di produzione sarà leggermente diversa.
‫Ho intenzione di colpire la freccia in su, e poi qui ho intenzione di fare il prod. Invece di un comando su, quello
‫che voglio fare qui è una configurazione.
‫Se si guarda l'aiuto molto velocemente per la configurazione, ha solo due opzioni e nessuna di
‫queste è veramente rilevante in questa situazione.
‫Quello che vogliamo fare è semplicemente eseguire la configurazione da sola. Quello che effettivamente farà è guardare
‫entrambi i file e unirli in un unico file di Compose equivalente.
‫Quindi quello che potremmo fare qui è semplicemente eseguire questo comando da qualche parte nella nostra soluzione CI. te, qualcosa del genere.
‫Poi fai uscire un file, forse con Quel file di output sarebbe quello che useremmo
‫ufficialmente in produzione per creare o aggiornare il nostro stack.
‫Comunque, voglio dare un piccolo avvertimento qui.
‫Questa è tutta roba relativamente nuova.
‫Sappiamo che Secrets e Swarm Stacks sono relativamente nuovi.
‫Hanno solo un paio di mesi.
‫A partire da questa registrazione.
‫Quindi c'è un paio di spigoli.
‫Abbiamo appena eseguito il comando config e noterai che i segreti non sono elencati qui.
‫Questo è un bug al momento.
‫In realtà sto lavorando con il team Docker per vedere se non possiamo eliminare questo bug.
‫Quindi, nel momento in cui leggi questo, potrebbe essere già stato risolto.
‫Assicurati di controllare l'output della linea di configurazione prima di procedere
‫alla distribuzione in produzione.
‫luogo, l'opzione Compose Extends, che non ho discusso qui, è un altro modo per sovrascrivere questi file di Compose
‫in cui effettivamente si utilizza il file di override e in effetti si definisce una sezione extends.
‫In secondo
‫È un po 'più dichiarativo, quindi è più facile da capire. Fornirò un link nei
‫riferimenti per questa sezione. Sappi solo che l'opzione Estendi non funziona ancora negli stack di Swarms.
‫Non l'ho menzionato qui perché non ti dà veramente il ciclo di vita completo dell'app che speravamo,
‫ma mi aspetto che a un certo punto facciano qualcosa al riguardo.
‫Ad esempio, aggiungilo a Swarm o crea un flusso di lavoro migliore. Perché è davvero l'idea che stiamo cercando di ottenere
‫con tutti questi strumenti, è avere un ciclo di vita completo e facile dallo sviluppo fino alla fase di
‫test, in produzione, con lo stesso set di configurazioni, nello stesso set di immagini .
‫Spero che questo ti abbia fatto riflettere su come potresti creare le tue app in questo modo
‫e su come estendere i tuoi file Compose per scenari complessi.
‫Perché niente mette un sorriso sul mio viso più veloce con Docker di quando vedo qualcuno che esegue un comando
‫su una riga per fare qualcosa che in precedenza richiedeva più script da eseguire.