Go Academy · Lezione

Docker Compose per lo sviluppo locale

Collegare un servizio Go a PostgreSQL e Redis

Lezione 3 di 413 passaggi

Docker Compose per lo sviluppo locale è una lezione Go Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Go Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Go Academy include 4 lezioni in totale.

Perché Docker Compose?

Docker Compose orchestra più container (applicazione, database, cache, message broker) per lo sviluppo locale, riproducendo un ambiente simile a quello di produzione senza dover configurare manualmente i servizi.

Struttura di docker-compose.yml

Definisca servizi, reti e volumi in un file YAML:

services:
  app:
    build: .
    ports: ["8080:8080"]
    environment:
      - DATABASE_URL=postgres://app:pass@db/mydb
    depends_on: [db]
  db:
    image: postgres:15
    environment:
      POSTGRES_USER: app
      POSTGRES_PASSWORD: pass
      POSTGRES_DB: mydb
    volumes:
      - pgdata:/var/lib/postgresql/data
volumes:
  pgdata:

Live reload con Air

Utilizzi github.com/air-verse/air per il live reload durante lo sviluppo. Monti il codice sorgente nel container ed esegua air invece del binario:

app:
  volumes:
    - .:/app
  command: air

Controlli dello stato

Definisca i controlli dello stato affinché depends_on attenda che il DB sia realmente pronto, non soltanto avviato:

db:
  healthcheck:
    test: ["CMD-SHELL", "pg_isready -U app"]
    interval: 5s
    timeout: 3s
    retries: 5
app:
  depends_on:
    db:
      condition: service_healthy

Override per l'ambiente

Utilizzi docker-compose.override.yml (unito automaticamente) per le impostazioni specifiche dell'ambiente locale, mantenendo pulito il file di base per la CI:

# docker-compose.override.yml
services:
  app:
    volumes: [".:/app"]  # source mount for live reload

Reti denominate

Inserisca i servizi in una rete personalizzata condivisa per consentire il service discovery tramite DNS usando il nome del servizio:

networks:
  backend:
    driver: bridge
services:
  app:
    networks: [backend]
  db:
    networks: [backend]

File dell'ambiente

Utilizzi la chiave env_file per caricare i file .env nel container, mantenendo i segreti fuori dal file YAML:

app:
  env_file: .env.local

Esecuzione dei comandi

Comandi Compose comuni:

docker compose up -d      # start in background
docker compose down -v    # stop and remove volumes
docker compose logs -f app # stream app logs
docker compose exec db psql -U app mydb # run in container

Inizializzazione del database

Monti i file SQL di inizializzazione nella directory /docker-entrypoint-initdb.d dell'immagine postgres: vengono eseguiti alla prima creazione del container:

db:
  volumes:
    - ./migrations:/docker-entrypoint-initdb.d

Profili

Utilizzi i profili Compose per avviare i servizi opzionali (ad esempio, uno stack di monitoraggio) solo quando necessario:

services:
  grafana:
    profiles: ["monitoring"]

Compose nella CI

Esegua i test di integrazione con servizi reali nella CI utilizzando Compose. GitHub Actions supporta Docker Compose in modo nativo; utilizzi i controlli dello stato per attendere che i servizi siano pronti.

Verifica rapida

Come si fa ad assicurare che il container dell'applicazione attenda che il database sia pronto in Docker Compose?

Riepilogo: Docker Compose

Punti chiave:

  • docker-compose.yml definisce tutti i servizi, le reti e i volumi
  • depends_on + healthcheck per verificare che i servizi siano pronti
  • File di override per le impostazioni dello sviluppo locale; env_file per i segreti
  • Air per il live reload; monti il codice sorgente come volume
Gratis per iniziare

Impara Go con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
51
Lezioni
203

Domande Frequenti

La lezione «Docker Compose per lo sviluppo locale» è gratuita?

Sì — il testo completo di «Docker Compose per lo sviluppo locale» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Go Academy, passa a CoddyKit PRO. Il corso Go Academy include 4 lezioni in totale.

Cosa imparerò in «Docker Compose per lo sviluppo locale»?

Collegare un servizio Go a PostgreSQL e Redis Eserciti Go Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Go Academy?

Non è richiesta alcuna esperienza precedente. Go Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Docker Compose per lo sviluppo locale»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Go Academy?

Sì. Ogni lezione Go Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Build Docker multi-stage per Go
  2. Configurazione dell'ambiente e segreti
  3. Docker Compose per lo sviluppo locale
  4. Health check e ottimizzazione per la produzione
← Torna a Go Academy