Docker Compose permette di definire e gestire applicazioni multi-container con un singolo file YAML.
Struttura Base
version: ‘3.8’
services:
web:
image: nginx:latest
ports:
– ‘8080:80’
volumes:
– ./html:/usr/share/nginx/html
restart: unless-stopped
db:
image: mariadb:latest
environment:
MYSQL_ROOT_PASSWORD: segreta
MYSQL_DATABASE: mio_db
volumes:
– db_data:/var/lib/mysql
volumes:
db_data:
Comandi Docker Compose
docker compose up -d # Avvia in background
docker compose down # Ferma e rimuovi
docker compose ps # Stato servizi
docker compose logs -f # Log in tempo reale
docker compose pull # Aggiorna immagini
docker compose restart
docker compose exec web bash # Shell nel servizio
Esempio Stack Web Completo
version: ‘3.8’
services:
nginx:
image: nginx:alpine
ports: [’80:80′, ‘443:443’]
volumes:
– ./nginx.conf:/etc/nginx/nginx.conf
– ./certs:/etc/ssl/certs
depends_on: [app]
app:
build: .
environment:
– DATABASE_URL=mysql://user:pass@db/mydb
depends_on: [db]
db:
image: mariadb:10.11
environment:
MYSQL_DATABASE: mydb
MYSQL_USER: user
MYSQL_PASSWORD: pass
MYSQL_ROOT_PASSWORD: rootpass
volumes: [‘db_data:/var/lib/mysql’]
volumes:
db_data: