⚠️ Traduction non officielle - Cette documentation est une traduction communautaire non officielle de Docker.

Déployer sur Swarm

Cette page explique comment déployer votre application Docker Compose sur un cluster Docker Swarm.

Présentation

Docker Swarm mode vous permet de déployer et de gérer des applications multi-conteneurs à travers un cluster de machines Docker. Compose peut être utilisé pour définir l'application et la déployer sur Swarm.

Prérequis

  • Un cluster Docker Swarm configuré
  • Docker Compose installé
  • Un fichier compose.yaml valide

Configuration du Swarm

Si vous n'avez pas encore de cluster Swarm, initialisez-le :

$ docker swarm init

Déploiement avec docker stack

Pour déployer votre application Compose sur Swarm, utilisez docker stack :

$ docker stack deploy -c compose.yaml myapp

Cette commande :

  • Lit votre fichier compose.yaml
  • Crée les services sur le cluster Swarm
  • Gère l'orchestration et la mise à l'échelle

Gestion des services

Listez vos services déployés :

$ docker stack services myapp

Visualisez les tâches de votre stack :

$ docker stack ps myapp

Mise à jour

Pour mettre à jour votre déploiement :

$ docker stack deploy -c compose.yaml myapp

Docker Swarm gère automatiquement le déploiement progressif.

Suppression

Pour supprimer la stack complète :

$ docker stack rm myapp

Différences avec docker compose

Quand vous déployez sur Swarm :

  • Certaines options Compose ne sont pas supportées
  • La section deploy devient importante pour la configuration Swarm
  • Les volumes et réseaux sont gérés au niveau du cluster

Configuration avancée

Mise à l'échelle

Utilisez la section deploy pour configurer la mise à l'échelle :

services:
  web:
    image: nginx
    deploy:
      replicas: 3
      update_config:
        parallelism: 1
        delay: 10s
      restart_policy:
        condition: on-failure

Contraintes de placement

Contrôlez où vos conteneurs s'exécutent :

services:
  db:
    image: postgres
    deploy:
      placement:
        constraints:
          - node.role == manager

Étapes suivantes