Position actuelle: Accueil> Derniers articles> Utilisation de Docker Compose et Nginx pour obtenir un déploiement d'équilibrage de charge à haute disponibilité des applications PHP

Utilisation de Docker Compose et Nginx pour obtenir un déploiement d'équilibrage de charge à haute disponibilité des applications PHP

M66 2025-08-04

Déploiement à haute disponibilité des applications PHP via Docker Compose et Nginx

Dans le développement d'applications Web moderne, la haute disponibilité est l'une des exigences clés. Avec Docker Compose et Nginx, nous pouvons facilement réaliser le déploiement à haute disponibilité des applications PHP, en veillant à ce que les applications soient toujours stables et disponibles lors de la rencontre des échecs.

En tant que plate-forme de contenerisation principale, Docker peut encapsuler les applications et leurs dépendances dans des conteneurs indépendants. Docker Compose simplifie le processus de définition et de gestion des applications multi-container.

Nginx n'est pas seulement un serveur Web haute performance, mais aussi un serveur proxy inverse largement utilisé. Il peut distribuer le trafic demandé à plusieurs serveurs backend, réaliser l'équilibrage de la charge et améliorer la disponibilité et les performances du système global.

Définir le service Docker Compose

Tout d'abord, vous devez créer un fichier docker-compose.yml pour définir plusieurs instances d'application et des conteneurs Nginx. La configuration de l'exemple est la suivante:

 Version: '3'
services:
  APP1:
    construire:
      contexte: .
      dockerfile: dockerfile
    redémarrer: toujours
  APP2:
    construire:
      contexte: .
      dockerfile: dockerfile
    redémarrer: toujours
  nginx:
    Image: nginx
    PORTS:
      - "80:80"
    Volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
    redémarrer: toujours

Dans cette configuration, App1 et App2 sont deux conteneurs d'applications PHP, qui peuvent exécuter les mêmes versions ou différentes d'applications pour obtenir une redondance. Le conteneur Nginx est responsable de la réception du trafic et de l'équilibrage de la charge.

Configuration d'équilibrage de la charge de Nginx

Créez et montez un fichier de configuration nginx.conf dans le conteneur Nginx. L'exemple de configuration est le suivant:

 http {
  Backend en amont {
    Server App1: 8080;
    Server App2: 8080;
  }

  serveur {
    Écoutez 80;

    emplacement / {
      proxy_pass http: // backend;
      proxy_set_header host $ host;
      proxy_set_header x-real-ip $ Remote_addr;
    }
  }
}

Cette configuration définit un backend nommé en amont, qui contient deux adresses de serveur d'applications. Une fois que Nginx a reçu la demande, il alloue le trafic vers ces deux conteneurs d'application PHP pour atteindre l'équilibrage de charge.

Créer une image de conteneur d'application PHP

Écrivez un dockerfile en fonction des besoins réels, l'exemple de contenu est le suivant:

 De PHP: 7.4.15-fpm

Workdir / var / www / html

Copie. .

Exécuter Chmod -R 755 Storage

Cmd ["php-fpm"]

Ce dockerfile est basé sur l'image PHP officielle, définit le répertoire de travail, copier le code d'application et configure les autorisations du répertoire et démarre enfin le service PHP-FPM.

Lancez une application PHP à haute disponibilité

Une fois la configuration terminée, démarrez tous les conteneurs avec la commande suivante:

 docker-compose up -d

Cette commande démarrera plusieurs conteneurs définis en arrière-plan, permettant aux applications PHP d'être équilibrées à la charge via Nginx pour atteindre une haute disponibilité.

Résumer

Grâce à Docker Compose et Nginx, nous avons réussi à construire un environnement de déploiement hautement disponible pour les applications PHP. L'architecture et le mécanisme d'équilibrage de la charge multi-continents garantissent que les applications sont toujours disponibles en un seul point de défaillance et d'échelle de support.

Cet article fournit des exemples de base où vous pouvez personnaliser davantage les configurations en fonction des besoins réels pour implémenter une architecture d'environnement de production plus complexe.