# Docker Compose - Aide-mémoire

## Commandes Essentielles

### Démarrage et Arrêt
```bash
# Démarrer les services
docker compose up -d          # Mode détaché (arrière-plan)
docker compose up            # Mode interactif (voir les logs)

# Arrêter les services
docker compose down          # Arrête et supprime les conteneurs
docker compose stop          # Arrête sans supprimer
```

### Logs et Surveillance
```bash
# Voir les logs
docker compose logs          # Tous les logs
docker compose logs -f       # Suivre les logs en direct
docker compose logs [service] # Logs d'un service spécifique

# État des conteneurs
docker compose ps            # Liste et état des conteneurs
```

### Construction et Reconstruction
```bash
# Construire les images
docker compose build         # Tous les services
docker compose build [service] # Un service spécifique

# Reconstruction et démarrage
docker compose up -d --build # Reconstruire puis démarrer
```

## Structure docker-compose.yml

### Services
```yaml
services:
  monservice:
    image: ...         # Utiliser une image existante
    build: ...         # Construire depuis un Dockerfile
    ports:            # Exposer des ports
    volumes:          # Monter des volumes
    depends_on:       # Définir des dépendances
    networks:         # Connecter aux réseaux
```

### Réseaux
```yaml
networks:
  monreseau:         # Réseau simple
  monreseau_interne:
    internal: true   # Réseau isolé
```

### Volumes
```yaml
volumes:
  monvolume:        # Volume pour persistance
```

## Commandes Utiles

### Inspection
```bash
# Vérifier la configuration
docker compose config    # Valider le fichier compose

# Voir les réseaux
docker network ls       # Lister les réseaux
docker network inspect [réseau]  # Détails d'un réseau

# Voir les volumes
docker volume ls        # Lister les volumes
```

### Debug
```bash
# Accéder à un conteneur
docker compose exec [service] sh   # Ouvrir un shell

# Voir les processus
docker compose top               # Processus en cours
```

### Gestion des Services
```bash
# Redémarrer des services
docker compose restart          # Tous les services
docker compose restart [service] # Un service spécifique

# Recréer des conteneurs
docker compose up -d --force-recreate
```

## Conseils

- Utilisez toujours `-d` en production, jamais en développement
- Pensez à vérifier les logs en cas de problème
- `docker compose config` est votre ami pour valider la syntaxe
- Les réseaux se créent automatiquement
- Les volumes persistent après un `down` (sauf si `-v`)
