Docker è un progetto open source che fornisce una piattaforma aperta a sviluppatori e amministratori di sistema per creare, impacchettare ed eseguire applicazioni ovunque come un contenitore leggero. Docker automatizza la distribuzione delle applicazioni all'interno di contenitori software.
Nodejs è un ambiente di runtime JavaScript open source. È runtime multipiattaforma, può essere installato su Linux, Windows, MacOS, FreeBSD, ecc. Nodejs è molto utile per creare applicazioni sia server che desktop.
In questo tutorial, ti mostrerò come creare un'immagine Docker per un progetto applicativo Nodejs Express esistente in Ubuntu 18.04. Impareremo come dockerizzare un'applicazione Nodejs e quindi distribuire l'applicazione come contenitore nell'ambiente docker utilizzando uno script di composizione docker.
Prerequisiti
- Ubuntu 18.04
- Privilegi di root
Cosa faremo
- Installa Docker CE
- Installa Docker-Compose
- Imposta il progetto Nodejs Express
- Costruisci il progetto
- Test
Passaggio 1:installazione di Docker CE
In questo tutorial, installeremo l'edizione community docker-ce dal repository docker. Installeremo docker-ce community edition e docker-compose che supporta la composizione del file versione 3.
Prima di installare docker-ce, installa le dipendenze docker necessarie usando il comando apt.
sudo apt install -y \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
Ora aggiungi la chiave mobile e il repository eseguendo i comandi seguenti.
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
Installa il pacchetto docker-ce.
sudo apt install docker-ce
Al termine dell'installazione, avvia il servizio Docker e abilitalo per l'avvio ogni volta all'avvio del sistema.
systemctl start docker
systemctl enable docker
Successivamente, daremo i normali privilegi utente per eseguire e gestire il contenitore Docker.
Aggiungi un nuovo utente chiamato 'mohammad' e aggiungilo al gruppo Docker.
useradd -m -s /bin/bash mohammad
usermod -a -G docker mohammad
Ora accedi come utente "mohammad" ed esegui il contenitore docker hello-world.
su - mohammad
docker run hello-world
E otterrai il risultato come mostrato di seguito.
Passaggio 2:installazione di Docker-Compose
In questo passaggio, installeremo manualmente docker-compose dal file binario che può essere scaricato da GitHub. Installeremo l'ultima versione di Docker-Compose che supporterà la Compose v3.
Scarica l'ultima versione 1.22.0 di docker-compose usando il comando curl nella directory '/usr/local/bin', quindi rendila eseguibile usando chmod.
Esegui i comandi seguenti.
sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
E l'ultima versione di docker-compose è stata installata, controlla eseguendo il comando docker-compose di seguito.
docker-compose version
Di seguito il risultato.
Fase 3 - Configurazione del progetto Nodejs Express
In questa sezione, configureremo l'ambiente dell'applicazione Nodejs. Utilizzeremo una semplice applicazione nodejs che può essere generata utilizzando 'express-generator'.
Accedi all'utente 'mohammad'.
su - mohammad
Crea una nuova directory denominata 'progetto' e vai ad essa.
mkdir -p project
cd project
Ora genera una semplice applicazione nodejs di hello-word usando il comando 'express' di seguito.
express hakase-app
Nota:
Assicurati che i pacchetti nodejs, npm e 'express-generator' siano stati installati sul sistema.
E otterrai la semplice app nodejs express nella directory 'hakase-app'.
Successivamente, creeremo la nostra immagine docker personalizzata per l'applicazione nodejs 'hakase-app'.
Nella directory 'progetto', crea un nuovo 'Dockerfile' usando vim.
vim Dockerfile
Incolla lì la seguente configurazione dell'immagine della finestra mobile.
FROM node:8.11.4-alpine RUN mkdir -p /src RUN npm install express-generator -g WORKDIR /src ADD hakase-app/package.json /src/package.json RUN npm install EXPOSE 3000 CMD node hakase-app/bin/www
Salva ed esci.
Stiamo creando una nuova immagine Docker personalizzata per la nostra applicazione nodejs con le specifiche seguenti.
- L'immagine personalizzata è basata sull'immagine ufficiale nodejs 8.11.4 alpine version.
- Stiamo creando una nuova directory per il nostro progetto '/src'.
- Installa 'express-generator' nell'immagine personalizzata.
- Aggiungi il file 'package.json' che contiene il profilo dell'applicazione e i pacchetti necessari alla directory '/src'.
- Installa tutti i pacchetti nodejs necessari per il progetto, in base al file 'package.json'.
- Esporta la porta 3000 con il comando exec start predefinito 'node hakase-app/bin/www'.
Successivamente, creeremo l'immagine personalizzata in base allo script di composizione mobile.
Crea un nuovo file yml 'docker-compose.yml' usando vim.
vim docker-compose.yml
Incolla lì la seguente configurazione.
version: '3' services: hakase-app: build: . volumes: - ./hakase-app:/src/hakase-app ports: - "3000:3000" restart: always
Salva ed esci.
Stiamo creando un nuovo servizio docker chiamato 'hakase-app' e allo stesso tempo stiamo creando l'immagine docker personalizzata basata su 'Dockerfile' nella directory del progetto e monteremo automaticamente i file dell'applicazione hakase-app.
La configurazione di Nodejs Express è stata completata.
Fase 4:crea ed esegui il progetto
Accedi come utente 'mohammad' e vai alla directory 'progetto'
su - mohammad
cd project/
Crea l'immagine e crea il servizio docker hakase-app utilizzando il comando docker-compose di seguito.
docker-compose build
Ora otterrai il risultato come mostrato di seguito.
E quando è completo, esegui il servizio docker 'hakase-app'.
docker-compose up -d
Di seguito il risultato.
L'immagine della finestra mobile personalizzata per la nostra applicazione Nodejs è stata creata e il servizio della finestra mobile dell'app hakase è attivo e funzionante.
Fase 5 - Test
Mostra l'immagine della finestra mobile disponibile sul server.
docker-compose images
docker images
È stata creata una nuova immagine della finestra mobile personalizzata per la nostra applicazione Nodejs.
Mostra il servizio Docker in esecuzione.
docker-compose ps
docker ps
L'app Nodejs è attiva e funzionante sulla porta host 3000.
Apri il browser web e digita l'indirizzo IP del server con la porta.
http://10.0.15.2:3000/
E otterrai la semplice pagina express.
Dockerizzazione dell'applicazione Nodejs Express su Ubuntu 18.04 completata con successo.