Cos’è Docker Compose e perché usarlo
Buongiorno a tutti e benvenuti in nuovo articolo di tooldech, in questo articolo parleremo di uno strumento utile quando si usa Docker, ti sarai accorto che avviare più container con docker run
può diventare rapidamente complicato. Immagina di dover far partire un’applicazione web con un database, un server cache e magari un reverse proxy: tanti comandi, porte da ricordare, reti da creare…
Ecco dove entra in gioco Docker Compose: uno strumento che ti permette di definire e avviare più container Docker tramite un unico file YAML. È perfetto per creare ambienti di sviluppo replicabili, leggibili e facili da mantenere.
Come funziona
Docker Compose lavora attraverso un file chiamato docker-compose.yml
, dove si definiscono:
- i servizi (es. app, database…),
- le reti che li collegano,
- eventuali volumi persistenti,
- e tutte le configurazioni necessarie per avviare l’intero stack.
Una volta pronto il file, basta un comando per avviare tutto:
docker-compose up
Prerequisiti
Prima di iniziare, assicurati di avere installato
- Docker Engine
- Docker Compose (incluso nelle versioni recenti di Docker Desktop)
Oppure guarda il mio articolo sull’installazione di docker.
Verifica tutto con:
docker --version
docker compose version

Creiamo il nostro primo ambiente locale
In questa guida creeremo un’applicazione demo composta da:
- un server web (basato su Nginx)
- un database PostgreSQL.
1. Struttura del progetto
Crea una cartella per il progetto:
mkdir mio-progetto-docker
cd mio-progetto-docker
Al suo interno, creeremo due file:
- docker-compose.yml → definisce i servizi
- index.html → un file HTML di test per il web server

2. Scriviamo il file docker-compose.yml
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "8081:80"
volumes:
- ./index.html:/usr/share/nginx/html/index.html:ro
depends_on:
- db
db:
image: postgres:13
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: miaapp
volumes:
- db_data:/var/lib/postgresql/data
volumes:
db_data:
Spiegazione dettagliata:
- version: ‘3.8’: versione del formato Compose.
- services: definisce i container.
- web:
- usa l’immagine ufficiale di nginx.
- espone la porta 8081 sul tuo PC verso la 80 del container.
- monta index.html dentro la directory predefinita di Nginx.
- dipende dal database (depends_on).
- db:
- usa l’immagine ufficiale postgres:13.
- setta variabili di ambiente per utente, password e database iniziale.
- crea un volume persistente chiamato db_data.
- volumes: definizione dei volumi nominati (persistenti).

Se vuoi scaricare il file docker-compose per partire già avvantaggiato ecco qui:
3. Creiamo il file index.html
Nel progetto, crea il file html:

4. Avviamo l’ambiente
Avvia tutto con:
docker-compose up
Vedrai i log dei container partire. Se è la prima volta, Docker scaricherà le immagini necessarie.

5. Prova che funziona
Apri il browser e vai su:
http://localhost:8081
Vedrai la scritta:

Nel frattempo, il container PostgreSQL sarà attivo, pronto per accettare connessioni dalla tua app.
Comandi utili per Docker Compose
- Avvio in background:
docker-compose up -d
- Stop dei servizi:
docker-compose down

- Verifica lo stato:
docker-compose ps
- Log dei container:
docker-compose logs -f

Conclusione
Hai appena creato il tuo primo ambiente di sviluppo locale con Docker Compose: semplice, leggibile, potente.
Questa è la base perfetta per costruire applicazioni più complesse, integrando backend, frontend, database, queue, proxy e altro. In un solo file, gestisci tutto il tuo stack!
Siamo già arrivati alla fine di questo articolo interessante e semplice di Docker Compose, grazie per la lettura e al prossimo articolo inisieme, a presto !
Seguici sui nostri social!