Junior
Qual è la tua esperienza con Docker Compose?
sobes.tech AI
Risposta dell'AI
Utilizzo Docker Compose per definire e avviare applicazioni multi-container. La mia esperienza include:
- Sviluppo di un ambiente locale: Creazione di
docker-compose.ymlper avviare tutti i servizi necessari (backend, frontend, database, cache) per lo sviluppo locale. Questo permette di creare rapidamente un ambiente isolato. - Test: Uso di Docker Compose per creare ambienti di test con configurazioni di servizi diverse.
- Deployment in staging/produzione: Sebbene per la produzione si utilizzino spesso orchestratori più potenti (come Kubernetes), Docker Compose è stato usato nelle fasi iniziali o per piccoli progetti per il deployment su server di staging.
Esempi di utilizzo dei campi in docker-compose.yml:
services: Definizione di un insieme di container.image: Specifica dell'immagine Docker da usare.build: Costruzione dell'immagine da un Dockerfile.ports: Mappatura delle porte.volumes: Montaggio di volumi per salvare dati o montare codice sorgente.networks: Definizione di reti personalizzate.depends_on: Stabilire dipendenze tra servizi.environment: Passare variabili di ambiente al container.
Esempio di configurazione semplice per un'app web e un database:
services:
webapp:
build: ./webapp # Costruzione da Dockerfile nella directory webapp
ports:
- "80:80" # Mappatura della porta 80 dell'host alla porta 80 del container
environment:
DATABASE_URL: postgresql://user:password@db:5432/mydb # Variabile di ambiente
depends_on:
- db # L'app web dipende dal database
db:
image: postgres:13 # Uso dell'immagine PostgreSQL
volumes:
- db_data:/var/lib/postgresql/data # Persistenza dei dati
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: mydb
volumes:
db_data: # Definizione del volume nominato
Comandi tipici:
docker compose up -d # Avvia i servizi in background
docker compose down # Ferma e rimuove i servizi
docker compose build # Costruisce le immagini
docker compose logs <nome_servizio> # Visualizza i log di un servizio specifico
docker compose exec <nome_servizio> <comando> # Esegue un comando all'interno del container
Sono familiare con le versioni di sintassi di Compose e le loro differenze. Capisco come usare i file .env per gestire le variabili di ambiente e come applicare i profili per avviare diversi set di servizi.