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!
Your passion for your subject matter shines through in every post. It’s clear that you genuinely care about sharing knowledge and making a positive impact on your readers. Kudos to you!
Your blog is a beacon of light in the often murky waters of online content. Your thoughtful analysis and insightful commentary never fail to leave a lasting impression. Keep up the amazing work!
Your writing is like a breath of fresh air in the often stale world of online content. Your unique perspective and engaging style set you apart from the crowd. Thank you for sharing your talents with us.
I do believe all the ideas youve presented for your post They are really convincing and will certainly work Nonetheless the posts are too short for novices May just you please lengthen them a little from subsequent time Thanks for the post
I have read some excellent stuff here Definitely value bookmarking for revisiting I wonder how much effort you put to make the sort of excellent informative website
Magnificent beat I would like to apprentice while you amend your site how can i subscribe for a blog web site The account helped me a acceptable deal I had been a little bit acquainted of this your broadcast offered bright clear idea