Maison >développement back-end >tutoriel php >La recette d'or de Docker Compose, Nginx et MariaDB : architecture d'application PHP hautement disponible

La recette d'or de Docker Compose, Nginx et MariaDB : architecture d'application PHP hautement disponible

PHPz
PHPzoriginal
2023-10-12 09:25:58893parcourir

Docker Compose、Nginx和MariaDB的黄金配方:高可用PHP应用程序架构

La recette d'or de Docker Compose, Nginx et MariaDB : architecture d'application PHP hautement disponible

[Introduction]
À l'ère d'Internet d'aujourd'hui, la haute disponibilité est cruciale pour chaque site Web et chaque application. Pour atteindre cet objectif, nous devons construire une architecture stable, évolutive et performante. Cet article expliquera comment utiliser Docker Compose, Nginx et MariaDB pour créer une architecture d'application PHP hautement disponible et fournira des exemples de code spécifiques.

[Première partie : Présentation de l'architecture]
Notre objectif est de créer une architecture hautement disponible dans laquelle les applications PHP s'exécuteront dans plusieurs instances et seront distribuées via l'équilibrage de charge. De plus, nous utiliserons MariaDB comme couche de base de données et Nginx comme serveur proxy inverse.

[Partie 2 : Docker Compose]
Nous utiliserons Docker Compose pour définir et gérer l'ensemble de notre pile d'applications. Il nous permet de définir et de configurer tous les conteneurs à l'aide d'un simple fichier YAML. Voici un exemple de fichier Docker Compose contenant un conteneur d'application PHP, un conteneur Nginx et un conteneur MariaDB :

version: '3'
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - 8000:80
    environment:
      - DB_HOST=mariadb
  nginx:
    image: nginx:latest
    ports:
      - 80:80
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf:ro
  mariadb:
    image: mariadb:latest
    environment:
      - MYSQL_ROOT_PASSWORD=secret

[Partie 3 : Configuration Nginx]
Nginx agit comme un serveur proxy inverse, qui peut être distribué à plusieurs instances d'application PHP. . Nous devons modifier le fichier de configuration de Nginx pour y parvenir. Voici un exemple simplifié de fichier de configuration Nginx :

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    upstream php {
        server app1:80;
        server app2:80;
        # 可以根据需要修改添加更多的PHP应用实例
    }
    server {
        listen 80;
        location / {
            proxy_pass http://php;
        }
    }
}

[Partie 4 : Application PHP]
Notre application PHP est un exemple simple qui utilise le framework Slim pour gérer les requêtes HTTP. Voici un exemple de fichier index.php :

<?php
require __DIR__ . '/vendor/autoload.php';

$app = new SlimApp();

$app->get('/', function ($request, $response) {
    $response->getBody()->write("Hello, world!");
    return $response;
});

$app->run();

[Partie 5 : Démarrage et gestion]
Pour démarrer notre pile d'applications, exécutez simplement la commande suivante :

docker-compose up -d

Cela démarrera tous les conteneurs et les connectera ensemble. Si vous disposez de plusieurs instances de votre application PHP, Docker Compose créera un nouveau conteneur pour chaque instance.

Pour faire évoluer votre application, exécutez simplement la commande suivante :

docker-compose scale app=3

Cela lancera deux instances supplémentaires en plus de l'instance d'application existante.

[Conclusion]
En combinant Docker Compose, Nginx et MariaDB, nous pouvons construire une architecture d'application PHP hautement disponible, évolutive et performante. Cette recette en or améliore non seulement la fiabilité des applications, mais simplifie également le déploiement et la gestion. J'espère que les exemples de code spécifiques fournis dans cet article vous seront utiles. Que votre candidature prospère !

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