Maison >développement back-end >tutoriel php >Déploiement hautement disponible d'applications PHP avec Docker Compose et Nginx

Déploiement hautement disponible d'applications PHP avec Docker Compose et Nginx

WBOY
WBOYoriginal
2023-10-12 11:39:26801parcourir

通过Docker Compose和Nginx实现PHP应用程序的高可用部署

Déploiement hautement disponible d'applications PHP via Docker Compose et Nginx

Dans le développement d'applications Web modernes, la haute disponibilité est un facteur très important. En utilisant Docker Compose et Nginx, nous pouvons réaliser un déploiement haute disponibilité d'applications PHP et garantir que l'application reste disponible en cas de panne.

Docker est une plate-forme de conteneurisation populaire qui regroupe une application et ses dépendances dans un conteneur autonome. Docker Compose fournit un moyen simple de définir et d'exécuter plusieurs applications conteneurs.

Nginx est un serveur Web hautes performances et un serveur proxy inverse. Il peut distribuer le trafic entrant sur plusieurs serveurs backend pour équilibrer la charge.

Voici un exemple d'implémentation d'un déploiement hautement disponible d'une application PHP utilisant Docker Compose et Nginx :

Tout d'abord, nous devons créer un fichier docker-compose.yml pour définir notre application et notre conteneur Nginx. Dans ce fichier, on peut définir plusieurs services, chaque service correspondant à un conteneur.

version: '3'
services:
  app1:
    build:
      context: .
      dockerfile: Dockerfile
    restart: always
  app2:
    build:
      context: .
      dockerfile: Dockerfile
    restart: always
  nginx:
    image: nginx
    ports:
      - "80:80"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
    restart: always

Dans cet exemple, nous avons créé deux conteneurs d'applications (app1 et app2) et un conteneur Nginx (nginx) en même temps. app1 et app2 peuvent être la même application ou des applications différentes pour la redondance et la haute disponibilité.

Ensuite, nous devons créer un fichier de configuration nginx.conf et le monter dans le conteneur Nginx. Ce fichier de configuration utilise Nginx comme serveur proxy inverse pour distribuer le trafic entrant entre les deux conteneurs d'applications.

http {
  upstream backend {
    server app1:8080;
    server app2:8080;
  }

  server {
    listen 80;

    location / {
      proxy_pass http://backend;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
    }
  }
}

Dans cet exemple, nous configurons les adresses et les ports de deux conteneurs d'applications en tant que serveurs dans le bloc amont de Nginx. Ensuite, dans le bloc du serveur principal, proxy le trafic vers le backend.

Enfin, nous devons écrire un Dockerfile pour construire notre conteneur d'application. Ce Dockerfile peut être personnalisé en fonction de votre application spécifique.

FROM php:7.4.15-fpm

WORKDIR /var/www/html

COPY . .

RUN chmod -R 755 storage

CMD ["php-fpm"]

Dans cet exemple, nous avons utilisé l'image PHP officielle et défini le répertoire de travail sur /var/www/html. Nous copions ensuite le code et les fichiers de l'application dans le conteneur et définissons les autorisations appropriées. Enfin, nous démarrons le serveur PHP-FPM à l'aide de la commande php-fpm.

Après avoir terminé les étapes ci-dessus, nous pouvons utiliser la commande suivante pour démarrer notre application PHP hautement disponible :

docker-compose up -d

Cette commande démarrera tous les conteneurs et les mettra en arrière-plan.

Grâce aux étapes ci-dessus, nous avons mis en œuvre avec succès le déploiement haute disponibilité d'applications PHP à l'aide de Docker Compose et Nginx. Désormais, notre application fonctionnera dans plusieurs conteneurs et sera équilibrée en charge via Nginx.

Ce qui précède n'est qu'un exemple simple, vous pouvez le personnaliser en fonction de vos besoins spécifiques. En utilisant Docker Compose et Nginx, vous pouvez facilement réaliser un déploiement haute disponibilité d'applications PHP et garantir que votre application reste disponible en cas de panne.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn