Questo articolo mostra come distribuire l'applicazione Node in un contenitore Docker.
Nota: in questa esercitazione si presuppone che Docker sia installato e pronto per l'uso.
Passaggio 1: creare l'applicazione Node
Crea una directory chiamata src. Useremo quella directory. Creare un file denominato src/package.jsoncontenente quanto segue:
{
"name": "hello_world",
"private": true,
"version": "0.0.1",
"description": "Hello world Example",
"author": "",
"dependencies": {
"express": "3.2.4"
}
}
Ora crea un src/index.jscontenente quanto segue:
var express = require('express');
var app = express();
app.get('/', function (req, res) {
res.send('Hello from Docker\n');
});
app.listen(8080);
console.log('Running on http://localhost:8080');
Si prega di sapere che è possibile modificare la porta 8080in qualsiasi cosa si desideri, ma per questo esempio esporremo questa porta da utilizzare per la nostra applicazione. Dopo aver creato questi due file, è possibile procedere al passaggio successivo.
Passaggio 2: creare un file Docker
Un "File Docker" consente di creare e distribuire immagini Docker in base all'insieme di istruzioni fornite al suo interno. Crea un file denominato Dockerfilee popolalo con il seguente contenuto:
FROM centos:latest
MAINTAINER Name Here <username@localhost>
RUN rpm -Uvh http://mirror.pnl.gov/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
RUN yum install nodejs npm -y
COPY ./src /opt/src
RUN cd /opt/src; npm install
EXPOSE 8080
CMD ["node", "/opt/src/index.js"]
Spiegazione:
FROM centos:latest
Questo utilizzerà un'immagine chiamata centos. Se sull'host non è disponibile alcuna immagine, Docker ne estrae una dal suo repository.
MAINTAINER Name Here <username@localhost>
Questa istruzione ti consente di impostare l'autore per l'immagine da creare.
RUN rpm -Uvh http://mirror.pnl.gov/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
RUN yum install nodejs npm -y
…
RUN cd /opt/src; npm install
"RUN" eseguirà i comandi della shell forniti. In questo esempio, scaricherà l'eppm-release rpm e lo installerà, e installerà nodejs e npm dal suo repository. Dopo l'operazione successiva, verrà inserito nella directory del progetto ed eseguito npm installper installare dipendenze per l'applicazione.
COPY ./src /opt/src
Copia la directory (e i file) dall'host nel contenitore.
EXPOSE 8080
Porta aperta 8080 per l'utilizzo da parte del mondo esterno.
CMD ["node", "/opt/src/index.js"]
CMD fornirà l'esecuzione predefinita per il contenitore.
Dopo aver creato il file esattamente come mostrato sopra, puoi procedere al passaggio successivo.
Passaggio 3: crea l'immagine
Per creare la tua immagine, esegui il seguente comando:
docker build -t name/application .
Questo creerà un'immagine con un nome di repository di name/application. Se non ci sono errori, puoi procedere al passaggio successivo.
Passaggio 4: distribuire e testare l'applicazione
Ora che tutto è configurato, è possibile eseguire l'immagine eseguendo quanto segue:
docker run -p 49160:8080 -d name/application
Per testare la tua applicazione, esegui il seguente comando dall'host:
curl http://172.17.42.1:49160/
Se vedi, Hello from Dockerhai distribuito correttamente l'immagine Docker. Se desideri testarlo con il tuo browser, visita http://[SERVER_IP]:49160dal tuo browser (sostituisci l'indirizzo IP di conseguenza) e vedrai lo stesso messaggio.