0Pricing
Go Academy · Leçon

Docker Compose pour le développement local

Relier un service Go à PostgreSQL et Redis

Docker Compose pour le développement local est une leçon Go Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Go Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Go Academy comprend 4 leçons au total.

Pourquoi Docker Compose ?

Docker Compose orchestre plusieurs conteneurs (application, base de données, cache, courtier de messages) pour le développement local, en reproduisant un environnement proche de la production sans configuration manuelle des services.

Structure de docker-compose.yml

Définissez les services, les réseaux et les volumes dans un fichier 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:

Rechargement à chaud avec Air

Utilisez github.com/air-verse/air pour recharger automatiquement l’application pendant le développement. Montez le code source dans le conteneur et exécutez air à la place du binaire :

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

Contrôles de santé

Définissez des contrôles de santé afin que depends_on attende que la base de données soit réellement prête, et pas seulement démarrée :

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

Remplacements selon l’environnement

Utilisez docker-compose.override.yml (fusionné automatiquement) pour les paramètres propres au développement local, en conservant le fichier de base propre pour l’intégration continue :

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

Réseaux nommés

Placez les services sur un réseau personnalisé partagé afin de permettre leur découverte par DNS à partir du nom du service :

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

Fichiers d’environnement

Utilisez la clé env_file pour charger les fichiers .env dans le conteneur et éviter d’exposer les secrets dans le fichier YAML :

app:
  env_file: .env.local

Exécution de commandes

Commandes Compose courantes :

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

Initialisation de la base de données

Montez les fichiers SQL d’initialisation dans le répertoire /docker-entrypoint-initdb.d de l’image postgres : ils sont exécutés lors de la première création du conteneur :

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

Profils

Utilisez les profils Compose pour démarrer des services facultatifs (par exemple, une pile de supervision) uniquement lorsque cela est nécessaire :

services:
  grafana:
    profiles: ["monitoring"]

Compose dans l’intégration continue

Exécutez des tests d’intégration avec de vrais services dans l’intégration continue à l’aide de Compose. GitHub Actions prend nativement en charge Docker Compose ; utilisez des contrôles de santé pour attendre que les services soient prêts.

Vérification rapide

Comment vous assurer que le conteneur de l’application attend que la base de données soit prête dans Docker Compose ?

Récapitulatif : Docker Compose

Points clés :

  • docker-compose.yml définit tous les services, réseaux et volumes
  • depends_on et healthcheck pour vérifier que les services sont prêts
  • Fichiers de remplacement pour les paramètres du développement local ; env_file pour les secrets
  • Air pour le rechargement à chaud ; montez le code source comme volume

Questions Fréquemment Posées

La leçon « Docker Compose pour le développement local » est-elle gratuite ?

Oui — le texte complet de « Docker Compose pour le développement local » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Go Academy, passe à CoddyKit PRO. Le cours Go Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Docker Compose pour le développement local » ?

Relier un service Go à PostgreSQL et Redis Tu pratiques Go Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Go Academy ?

Aucune expérience préalable n'est requise. Go Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « Docker Compose pour le développement local » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Go Academy ?

Oui. Chaque leçon Go Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Builds Docker en plusieurs étapes pour Go
  2. Configuration de l’environnement et secrets
  3. Docker Compose pour le développement local
  4. Contrôles d’état et réglages de production
← Retour à Go Academy