Sobes.tech
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.yml per 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.