Docker - Configurazione Node.js: Una Guida per Principianti

Ciao a tutti, aspiranti sviluppatori! Oggi ci imbarcheremo in un viaggio emozionante nel mondo di Docker e Node.js. Come il tuo amico insegnante di informatica di quartiere, sono qui per guidarti in questa avventura passo per passo. Non preoccuparti se sei nuovo alla programmazione - inizieremo dalle basi e poi ci muoveremo verso l'alto. Allora, prenditi una tazza di caffè (o tè, se è più tuo stile) e tuffati con me!

Docker - Setting Node.js

Cos'è Docker?

Prima di addentrarci nei dettagli, parliamo di Docker. Immagina di trasferirti in una nuova casa. Invece di imballare tutto in scatole di diverse forme e dimensioni, cosa succederebbe se potessi mettere tutti i tuoi averi in contenitori standardizzati che si adattano perfettamente su qualsiasi camion o nave? Questo è essenzialmente ciò che Docker fa per il software!

Docker è una piattaforma che ti permette di impacchettare la tua applicazione e tutte le sue dipendenze in una unità standardizzata chiamata contenitore. Questi contenitori possono essere eseguiti in modo coerente su qualsiasi sistema, rendendo più facile sviluppare, distribuire ed eseguire applicazioni.

Perché Usare Docker con Node.js?

Ora, potresti chiederti, "Perché dovrei preoccuparmi di Docker per la mia applicazione Node.js?" Beh, lasciami raccontarti una piccola storia.

C'era una volta una sviluppatrice di nome Sarah. Ha costruito una fantastica applicazione Node.js sul suo laptop. Funzionava perfettamente! Ma quando ha cercato di eseguirla sul server del suo team, è crashata. Il problema? Diverse versioni di Node.js e alcune dipendenze mancanti. Sarah ha passato giorni a cercare di risolverlo.

Se Sarah avesse usato Docker, avrebbe potuto evitare questo mal di testa. Docker garantisce che la tua applicazione venga eseguita nello stesso ambiente ovunque - sia sul tuo laptop, sul desktop del tuo collega o su un server nel cloud.

Configurazione di Docker per Node.js

Bene, mettiamo le mani al lavoro e ci sporchiamo con un po' di configurazione!

Passo 1: Installare Docker

Prima di tutto, dobbiamo installare Docker sul nostro computer. Vai sul sito web di Docker e scarica Docker Desktop per il tuo sistema operativo. Segui le istruzioni di installazione, e sarai pronto a partire!

Passo 2: Creare un'Applicazione Node.js

Creiamo una semplice applicazione Node.js da containerizzare. Crea una nuova directory per il tuo progetto e naviga al suo interno:

mkdir my-node-app
cd my-node-app

Ora, creiamo un semplice file package.json:

npm init -y

Questo comando crea un file package.json di base con valori predefiniti. Successivamente, installiamo Express, un popolare framework Node.js:

npm install express

Ora, crea un file chiamato app.js e aggiungi il seguente codice:

const express = require('express');
const app = express();
const port = 3000;

app.get('/', (req, res) => {
res.send('Ciao, Docker!');
});

app.listen(port, () => {
console.log(`App in ascolto su http://localhost:${port}`);
});

Questa semplice applicazione crea un server web che risponde con "Ciao, Docker!" quando visiti l'URL radice.

Passo 3: Creare un Dockerfile

Ora arrivesse la parte emozionante - creare il nostro Dockerfile! Un Dockerfile è come una ricetta che dice a Docker come costruire il nostro contenitore. Crea un file chiamato Dockerfile (senza estensione) nella directory del tuo progetto e aggiungi il seguente:

# Usa un'immagine di runtime Node ufficiale come immagine padre
FROM node:14

# Imposta la directory di lavoro nel contenitore
WORKDIR /usr/src/app

# Copia package.json e package-lock.json
COPY package*.json ./

# Installa le dipendenze
RUN npm install

# Copia il resto del codice dell'applicazione
COPY . .

# Rende la porta 3000 accessibile fuori dal contenitore
EXPOSE 3000

# Definisce il comando per eseguire l'app
CMD [ "node", "app.js" ]

Spieghiamo un po' questo:

  • FROM node:14: Questo specifica l'immagine di base che stiamo usando - in questo caso, Node.js versione 14.
  • WORKDIR /usr/src/app: Questo imposta la directory di lavoro all'interno del contenitore.
  • COPY package*.json ./: Questo copia i nostri file package.json nel contenitore.
  • RUN npm install: Questo installa le nostre dipendenze all'interno del contenitore.
  • COPY . .: Questo copia il resto del nostro codice di applicazione nel contenitore.
  • EXPOSE 3000: Questo rende la porta 3000 accessibile fuori dal contenitore.
  • CMD [ "node", "app.js" ]: Questo specifica il comando per eseguire la nostra applicazione.

Passo 4: Costruire ed Eseguire il Contenitore Docker

Ora che abbiamo il nostro Dockerfile, costruiamo la nostra immagine Docker:

docker build -t my-node-app .

Questo comando costruisce un'immagine Docker e la tagga come my-node-app. La . alla fine dice a Docker di cercare il Dockerfile nella directory corrente.

Una volta completata la costruzione, possiamo eseguire il nostro contenitore:

docker run -p 3000:3000 my-node-app

Questo comando esegue il nostro contenitore e mappa la porta 3000 del contenitore alla porta 3000 della nostra macchina host.

Congratulazioni! Dovresti ora essere in grado di visitare http://localhost:3000 nel tuo browser web e vedere "Ciao, Docker!"

Comandi Docker Comuni

Ecco una tabella utile con alcuni comandi Docker che troverai utili:

Comando Descrizione
docker build Costruisce un'immagine Docker da un Dockerfile
docker run Esegue un contenitore Docker
docker ps Elenca i contenitori in esecuzione
docker stop Ferma un contenitore in esecuzione
docker rm Rimuove un contenitore
docker images Elenca le immagini Docker
docker rmi Rimuove un'immagine Docker
docker logs Visualizza i log per un contenitore

Conclusione

Eccoci, ragazzi! Abbiamo configurato con successo una applicazione Node.js utilizzando Docker. Abbiamo imparato cosa è Docker, perché è utile e come creare ed eseguire un contenitore Docker per un'app Node.js.

Ricorda, come ogni nuova abilità, padroneggiare Docker richiede pratica. Non scoraggiarti se le cose non funzionano perfettamente la prima volta. Continua a sperimentare, e prima di sapere, sarai un professionista del dockerizing!

Mentre chiudiamo, voglio condividere un piccolo segreto con te. Quando ho iniziato con Docker, ho accidentalmente digitato docker run invece di docker build e ho passato un'ora a chiedermi perché le mie modifiche non erano visibili. Tutti commettiamo errori - è così che impariamo!

Continua a programmare, continua ad imparare, e, soprattutto, divertiti! Arrivederci e Grazie per Tutti i Pesci!

Credits: Image by storyset