La dockerizzazione di un'applicazione include la specifica di tutti i prerequisiti richiesti per eseguire l'applicazione e quindi l'utilizzo del Dockerfile per creare un'immagine Docker specializzata che può essere condivisa con varie macchine. Dockerizzare un “ Node.js ' migliora la coerenza e garantisce un comodo debug da parte dello sviluppatore.
Prerequisiti
I prerequisiti per dockerizzare un “ Node.js ' l'applicazione include quanto segue:
- Installazione della finestra mobile.
- Comprensione di base dell'applicazione Node.js.
Come dockerizzare un'applicazione Node.js?
UN ' Node.js L'applicazione può essere dockerizzata tramite i seguenti passaggi:
Passaggio 1: crea un file 'package.json'.
Innanzitutto, crea una nuova directory in cui saranno compresi tutti i file. All'interno di questa directory, crea il ' pacchetto.json ' file che rappresenta l'app insieme alle sue dipendenze:
{'nome' : 'docker_web_app' ,
'versione' : '1.0.0' ,
'descrizione' : 'Node.js su Docker' ,
'autore' : 'Primo ultimo ' ,
'principale' : 'server.js' ,
'script' : {
'inizio' : 'nodo server.js'
} ,
'dipendenze' : {
'esprimere' : '^4.18.2'
} }
Passaggio 2: genera un file 'package-lock.json'.
All'interno del file 'package.json', esegui il comando ' installazione npm ' cmdlet. Questo genererà un ' pacchetto-lock.json ' che viene copiato nell'immagine Docker, come segue:
npm installare
Passaggio 3: crea un server
Successivamente, crea un ' server.js ' che dichiara un'app Web utilizzando il ' Express.js ' struttura:
'usare rigoroso' ;const espresso = richiedi ( 'esprimere' ) ;
const PORTA = 8080 ;
constHOST = '0.0.0.0' ;
const app = espresso ( ) ;
app.get ( '/' , ( richiedi, ris ) = > {
risp.invia ( 'Ciao mondo' ) ;
} ) ;
app.ascolta ( PORTO, OSPITE, ( ) = > {
console.log ( ` In esecuzione su http: // ${HOST} : ${PORTO} ` ) ;
} ) ;
Passiamo ora alle metodologie per eseguire l'applicazione all'interno di un contenitore Docker tramite un'immagine Docker ufficiale.
Passaggio 4: crea un Dockerfile
Crea manualmente un Dockerfile all'interno della stessa directory che comprende tutti i file. In questo file, scrivi la seguente riga di codice:
DAL nodo: 18DIR.LAVORO / usr / src / app
Pacchetto COPIA * .json . /
CORRI npm installare
COPIA . .
ESPORRE 8080
CMD [ 'nodo' , 'server.js' ]
Nello snippet di codice sopra, applica i passaggi indicati di seguito:
- Innanzitutto, utilizza l'ultima versione di supporto a lungo termine 18 del nodo come immagine di base contenuta in Hub Docker .
- Successivamente, crea una directory per contenere il codice dell'app nell'immagine.
- Rappresenta la directory di lavoro per l'applicazione.
- Ora installa le dipendenze dell'app tramite ' npm ”.
- Nota: Se viene utilizzata la versione npm 4 o precedente, non verrà creato un file 'package-lock.json'.
- Ora copia il ' pacchetto.json ' file. Inoltre, raggruppa il codice sorgente dell'app all'interno dell'immagine Docker tramite il pulsante ' COPIA ' istruzioni.
- Utilizza il ' ESPORRE ' istruzioni per consentire all'app di collegarsi alla porta 8080.
- Infine, definire il cmdlet per eseguire l'applicazione tramite CMD che definisce il runtime. Ecco, il “ nodo server.js ' verrà utilizzato per avviare il server.
Passaggio 5: crea un file '.dockerignore'.
Crea un file “.dockerignore” nella cartella “ Dockerfile 'directory/cartella comprendente il contenuto indicato di seguito:
nodo_modulinpm-debug.log
Questo contenuto evita che i moduli locali e i log di debug vengano rispettivamente copiati nell'immagine Docker.
Passaggio 6: crea l'immagine
Ora, all'interno della directory che comprende il Dockerfile, crea l'immagine utilizzando il cmdlet indicato di seguito:
creazione della finestra mobile. -T nodejs / nodo-web-app
In questo cmdlet, ' nodejs ' si riferisce al nome della directory, quindi specificare il cmdlet di conseguenza e ' -T ' flag contrassegna l'immagine.
Ora elenca le immagini tramite questo comando:
immagini della finestra mobile
Passaggio 7: eseguire l'immagine
Esegui/esegui l'immagine utilizzando il cmdlet indicato di seguito:
esecuzione della finestra mobile -P 49160 : 8080 -D nodejs / nodo-web-app
Ecco, il “ -P ' Il flag reindirizza una porta pubblica a una privata all'interno del contenitore e il flag ' -D ' flag esegue il contenitore in modalità distaccata, ovvero in background.
Passaggio 8: genera l'output dell'app
Ora stampa l'output dell'applicazione utilizzando i seguenti comandi:
finestra mobile p.sla finestra mobile registra 77b1e3c8576e
Se è necessario navigare all'interno della shell del contenitore, utilizzare il pulsante ' esecutivo 'cmdlet:
finestra mobile esecutivo -Esso 77b1e3c8576e / bidone / bash
Qui, ' 77b1e3c8576e ' rappresenta l'ID del contenitore che può essere copiato tramite l'esecuzione ' finestra mobile ps ' comando in precedenza.
Passaggio 9: test dell'applicazione
Per testare l'applicazione, recuperare la porta dell'app mappata da Docker:
finestra mobile p.s
Nel cmdlet precedente, Docker ha mappato il ' 8080 “porto all’interno del container verso il porto” 49160 'sulla macchina.
Passaggio 10: richiamo dell'applicazione
Richiamare l'applicazione tramite il pulsante “ arricciare ' facendo riferimento alla porta mappata sopra e inserendo i valori richiesti:
arricciare -io host locale: 49160
Passaggio 11: chiudi/uccidi l'applicazione
Infine, chiudi l'applicazione tramite il pulsante ' uccisione 'cmdlet:
finestra mobile uccisione 77b1e3c8576e
Inoltre, conferma se l'applicazione si è interrotta tramite questo comando con i valori di input:
arricciare -io host locale: 49160
Conclusione
UN ' Node.js L'applicazione può essere dockerizzata creando un server, un dockerfile, il file '.dockerignore', costruendo ed eseguendo l'immagine, generando l'output dell'app e testando, chiudendo e confermando l'arresto dell'applicazione. Questo articolo ha approfondito la dockerizzazione di un'applicazione Node.js.