A meno che non si parli di come risolveremo alcuni problemi con la versione
di produzione del nostro contenitore utilizzando un processo di compilazione in più fasi utilizzando un processo in più fasi, possiamo utilizzare diverse immagini
di base.
Possiamo avere una certa quantità di configurazione o codice che viene eseguito per creare
la nostra applicazione e quindi copiare il risultato in quello reale.
Quindi iniziamo a mettere insieme il nostro file di finestra mobile per metterlo in pratica.
Stiamo per iniziare con OPM.
Il mio editor di codice e poi all'interno della mia directory di progetto root ho intenzione di creare
un nuovo file chiamato file docker in modo che all'interno di qui avremo due sezioni distinte.
In primo luogo scriveremo la sezione che installerà tutte le nostre dipendenze ed
eseguirà il comando di esecuzione di NPM.
Ora la configurazione che useremo per il primo blocco o la fase di costruzione di Candis è un sacco
di configurazioni che abbiamo già esaminato più volte.
Quindi percorrilo piuttosto velocemente.
Beh, per prima cosa dite dal nodo Alpine e poi ho intenzione di taggare questa fase con un nome che posso taggare dicendo
come.
E poi fornendo il nome di questa fase o di questa fase, quindi chiamerò questa cosa costruttore.
Non è che sia un builder come questo, è un builder che significa che da questo comando e tutto ciò
che sta sotto verrà chiamato il builder e l'unico scopo di questa fase
è installare le dipendenze e costruire la loro applicazione.
Poi, dopo, vedremo tutta la solita configurazione che ti abbiamo reso così lontano
durante questo corso.
Quindi specifica la mia directory di lavoro dell'app che copierò sul mio pacchetto non solo su file nella directory di
app che eseguirò e installerò PM.
Copierò su tutto il mio codice sorgente.
Quindi, nota ora che stiamo facendo questa fase di costruzione e non ci preoccupiamo più di cambiare il
nostro codice sorgente.
Non dobbiamo più utilizzare l'intero sistema di volume.
Quel sistema di volume che abbiamo implementato con la composizione di docker è stato necessario solo perché volevamo
sviluppare la nostra applicazione e le nostre modifiche vengono immediatamente visualizzate nel contenitore quando eseguiamo il
nostro codice.
Qualsiasi vitamina di produzione non è più un problema perché non stiamo cambiando il nostro codice.
Quindi possiamo solo fare una copia diretta di tutto il nostro codice sorgente direttamente nel contenitore dopo aver copiato
tutto il nostro codice sorgente su di esso eseguiremo quindi con il comando Esegui NPM eseguito tutto bene ed è tutto quello che
dobbiamo fare per il nostro passo costruttore.
Quindi ancora una volta questo installerà le dipendenze eseguite su build e l'output di esso sarà
la cartella di build.
Ora una cosa che voglio sottolineare qui è che la cartella build verrà creata nella directory di lavoro.
Quindi la cartella che io e te ci interessano veramente come la cartella con
tutti i nostri asset di produzione che vogliamo servire al mondo esterno, il percorso verso quello all'interno del container sarà
costruito con una barra che avrà tutte le cose che ci interessano di.
Dunque, dammi la cartella che alla fine vorremmo copiare in qualche modo durante la
nostra fase di esecuzione.
OK, ora che abbiamo messo insieme la nostra fase di costruzione, scriveremo la configurazione
per la fase di esecuzione effettiva.
Quindi questa sarà la fase che dice che useremo il motore dell'immagine successiva in cui coperemo
il risultato per poi ricostruirlo e poi in qualche modo avviare il motore x.
Quindi per specificare l'inizio di una seconda fase tutto quello che dobbiamo fare è dire da e poi il nome
della nostra immagine di base che è il motore X. in questo modo noterete che non abbiamo dovuto inserire alcuna terminologia
o alcuna sintassi qui per specificare o dire che la fase iniziale che abbiamo qui si stava fermando
semplicemente inserendo una seconda affermazione che sostanzialmente dice che il blocco precedente è completo.
Non preoccuparti di questo, ogni singolo blocco o ogni singola faccia qui può avere solo una dichiarazione.
Quindi puoi immaginare che le dichiarazioni da qui inserite siano in qualche modo terminanti ogni
blocco successivo.
Quindi, all'interno di qui, scriveremo il comando per copiare su quella cartella di build in questo nuovo
tipo di contenitore del motore X che stiamo mettendo insieme.
Quindi dirò copia.
Dirò che vogliamo copiare qualcosa da una faccia diversa.
Quindi metterò un trattino dal costruttore di equals come.
Quindi sto dicendo che voglio copiare qualcosa da quell'altra fase su cui stiamo solo lavorando in
questo caso, vogliamo copiare qualcosa dalla faccia del costruttore.
Bene, quindi specifica la cartella che vogliamo copiare.
Quindi dirò build di app slash perché di nuovo questa è la cartella che io e te ci importa davvero.
E poi specificheremo dove vogliamo copiare la cosa.
All'interno di questo tipo di contenitore del motore X che stiamo mettendo insieme così la cartella in cui vogliamo
copiare questa roba.
E questo è un po 'di configurazione attorno al motore X in particolare.
Se tornate qui alla prossima documentazione sull'hub di Gawker e guardate quella sezione che dice che ospita alcuni contenuti semplici è
piuttosto difficile da vedere all'interno del vostro, ma essenzialmente vedrete qui un perfetto
esempio di questo proprio qui.
Quindi, se vuoi pubblicare alcuni contenuti HD statici, inseriscilo in questa cartella del motore di condivisione degli utenti X
HD m-L.
Quindi qualsiasi cosa al suo interno verrà automaticamente pubblicata dal motore X. Quando si avvia
Quindi diremo all'utente quanto non ci sia Ian lì, siamo solo noi il nostro motore di condivisione X HMO e andrò a classificare
la mia barra laterale solo per poter vedere tutto questo.
OK.
E che ci crediate o no, è più o meno così.
Per quanto tu sappia di aver detto qui oh sì, avvia il motore X ..
Bene, si scopre che il comando predefinito del contenitore X del motore o l'immagine del motore X sta per
avviare il motore X per noi.
Quindi non dobbiamo eseguire in modo specifico alcunché al motore di avvio X quando avviiamo il contenitore del
motore X.
Ci occuperemo automaticamente del comando per noi.
Quindi questo è praticamente tutto.
Questo è il nostro file docker per l'ambiente di produzione della comunità degli sviluppatori.
Ancora una volta la cosa veramente importante da capire qui è che abbiamo questo processo multi-step
in cui stiamo creando un contenitore temporaneo qui o un set di livelli proprio qui.
Eseguiamo un certo numero di comandi all'interno di quel set di livelli e quindi da quel set di
livelli stiamo solo copiando solo il minimo necessario solo le cose che ci interessano.
Quindi quando eseguiamo questo passaggio di copia qui stiamo essenzialmente scaricando tutto ciò che è stato
creato mentre questo set di configurazione è stato eseguito, quindi non stiamo estrapolando nulla dal nodo Alpine image.
Non stiamo estrapolando nessuno dei risultati dell'installazione.
Non copiamo alcuno dei nostri codici sorgente.
Tutto quello che stiamo ottenendo è il risultato di tale directory di build slash dell'app.
Questo è tutto.
Quindi la nostra immagine finale sarà relativamente piccola.
Sarà essenzialmente comunque grande il motore X immagini e questo è praticamente tutto.
Quindi è così.
Ora facciamo una breve pausa qui per assicurarmi di salvare questo file e poi lo
testeremo nella prossima sezione.
Quindi pausa veloce e ci vediamo tra un minuto.