Maison développement back-end tutoriel php La référence avec Docker Compose, Nginx et MariaDB : créer des clusters évolutifs d'applications PHP

La référence avec Docker Compose, Nginx et MariaDB : créer des clusters évolutifs d'applications PHP

Oct 12, 2023 pm 12:40 PM
nginx mariadb docker compose

Docker Compose、Nginx和MariaDB的黄金标准:构建可扩展的PHP应用程序集群

La référence en matière de Docker Compose, Nginx et MariaDB : créer des clusters d'applications PHP évolutifs

Introduction
Avec le développement continu des applications Internet, de plus en plus de sites Web et de services doivent gérer de grandes quantités de requêtes et de données simultanées, comment créer des clusters d'applications évolutifs est devenu un sujet brûlant. Dans cet article, nous verrons comment utiliser Docker Compose, Nginx et MariaDB pour créer un cluster évolutif d'applications PHP. Nous utiliserons des exemples de code spécifiques pour montrer comment configurer et gérer ce cluster, et comment réaliser une expansion dynamique et un équilibrage de charge des ressources.

1. Configuration de Docker Compose
Docker Compose est un outil permettant de définir et d'exécuter plusieurs conteneurs Docker. Il peut gérer les dépendances et les connexions réseau entre les conteneurs via un fichier de configuration. Dans notre cluster d'applications, nous utiliserons Docker Compose pour définir et gérer trois conteneurs : Nginx, l'application PHP et MariaDB.

Tout d'abord, nous devons créer un fichier docker-compose.yml et définir notre service de conteneur. docker-compose.yml文件,并定义我们的容器服务。

version: '3'

services:
  nginx:
    image: nginx
    ports:
      - 80:80
    depends_on:
      - php

  php:
    build:
      context: .
      dockerfile: Dockerfile.php
    volumes:
      - ./php:/var/www/html

  db:
    image: mariadb
    environment:
      MYSQL_ROOT_PASSWORD: example
Copier après la connexion

在这个配置文件中,我们定义了三个服务:Nginx、PHP和MariaDB。Nginx容器使用官方的Nginx镜像,并将容器的80端口映射到主机的80端口。PHP容器使用我们自己的Dockerfile来构建,并将主机的./php目录挂载到容器的/var/www/html目录。MariaDB容器使用官方的MariaDB镜像,并设置了一个root密码。

二、Nginx的配置
Nginx是一个高性能的Web服务器和反向代理服务器,它可以用于直接提供静态资源,也可以用来反向代理到后端的PHP应用程序。在我们的集群中,Nginx将担当转发请求到后端PHP容器的角色。

我们需要在Nginx容器中配置一个虚拟主机,用于将请求转发到PHP应用程序的容器。在Nginx的配置文件中,我们可以使用upstream指令来定义后端的PHP容器的地址,并使用proxy_pass指令将请求转发到这个地址。

我们可以将以下配置添加到nginx.conf文件中:

http {
    upstream php {
        server php:9000;
    }

    server {
        listen 80;

        location / {
            proxy_pass http://php;
        }
    }
}
Copier après la connexion

在这个配置中,我们使用upstream php定义了一个名为php的后端地址,并将请求转发到该地址上的9000端口。然后,我们在一个server块中,设置了Nginx监听80端口,并将所有请求通过proxy_pass指令转发给后端的PHP容器。

三、PHP应用程序的配置
在PHP应用程序的容器中,我们需要配置PHP解释器和应用程序代码。我们可以通过一个自定义的Dockerfile来构建这个容器,并在构建过程中安装必要的依赖项和扩展。

下面是一个示例的Dockerfile.php文件的内容:

FROM php:7.4-fpm

WORKDIR /var/www/html

COPY . .

RUN apt-get update && apt-get install -y 
    libpq-dev 
    && docker-php-ext-install pdo_mysql pdo_pgsql
Copier après la connexion

在这个Dockerfile中,我们使用官方的PHP 7.4-fpm镜像作为基础,设定工作目录为/var/www/html,然后将主机的应用程序代码复制到容器中。最后,我们使用apt-get

docker-compose up -d
Copier après la connexion

Dans ce fichier de configuration, nous définissons trois services : Nginx, PHP et MariaDB. Le conteneur Nginx utilise l'image officielle Nginx et mappe le port 80 du conteneur au port 80 de l'hôte. Le conteneur PHP est construit à l'aide de notre propre Dockerfile et monte le répertoire ./php de l'hôte dans le répertoire /var/www/html du conteneur. Le conteneur MariaDB utilise l'image officielle MariaDB et dispose d'un mot de passe root défini.


2. Configuration de Nginx

Nginx est un serveur Web et un serveur proxy inverse hautes performances. Il peut être utilisé pour fournir directement des ressources statiques, et peut également être utilisé comme proxy inverse pour les applications PHP back-end. Dans notre cluster, Nginx jouera le rôle de transfert des requêtes vers le conteneur PHP backend.

Nous devons configurer un hôte virtuel dans le conteneur Nginx pour transmettre les requêtes vers le conteneur de l'application PHP. Dans le fichier de configuration Nginx, nous pouvons utiliser la directive upstream pour définir l'adresse du conteneur PHP back-end, et utiliser la directive proxy_pass pour transmettre la requête à cette adresse .

Nous pouvons ajouter la configuration suivante au fichier nginx.conf :

docker-compose up -d --scale php=3
Copier après la connexion

Dans cette configuration, nous utilisons upstream php pour définir un fichier nommé php < /code> et transférez la demande au port 9000 sur cette adresse. Ensuite, dans un bloc <code>server, nous configurons Nginx pour écouter le port 80 et transmettre toutes les requêtes au conteneur PHP back-end via la directive proxy_pass.

3. Configuration de l'application PHP

Dans le conteneur de l'application PHP, nous devons configurer l'interpréteur PHP et le code de l'application. Nous pouvons créer ce conteneur via un Dockerfile personnalisé et installer les dépendances et extensions nécessaires pendant le processus de construction.

Ce qui suit est le contenu d'un exemple de fichier Dockerfile.php :

docker-compose down
Copier après la connexion

Dans ce Dockerfile, nous utilisons l'image officielle PHP 7.4-fpm comme base et définissons le répertoire de travail sur /var/www/html puis copie le code d'application de l'hôte dans le conteneur. Enfin, nous avons installé quelques extensions PHP à l'aide de la commande <code>apt-get.

4. Déploiement et gestion du cluster🎜Après avoir terminé la configuration ci-dessus, nous pouvons utiliser Docker Compose pour démarrer l'ensemble du cluster et réaliser une expansion dynamique et un équilibrage de charge des ressources. 🎜🎜Dans la ligne de commande, nous pouvons utiliser la commande suivante pour démarrer le cluster : 🎜rrreee🎜Cette commande démarrera tous les conteneurs et les mettra sur un réseau séparé afin qu'ils puissent communiquer entre eux. Nginx écoutera sur le port 80 de la machine hôte et transmettra la requête au conteneur PHP sur le backend. 🎜🎜Si nous souhaitons étendre notre cluster d'applications, nous pouvons utiliser la commande suivante pour démarrer plus de conteneurs PHP : 🎜rrreee🎜Cette commande démarrera 3 conteneurs PHP, élargissant ainsi notre cluster d'applications. Nginx implémentera automatiquement l'équilibrage de charge en fonction du nombre de conteneurs backend. 🎜🎜Si nous devons arrêter le cluster, nous pouvons utiliser la commande suivante : 🎜rrreee🎜Cette commande arrêtera et supprimera tous les conteneurs et réseaux. 🎜🎜Conclusion🎜Cet article explique comment utiliser Docker Compose, Nginx et MariaDB pour créer un cluster d'applications PHP évolutif, et montre les méthodes de configuration et de gestion à travers des exemples de code spécifiques. En utilisant Docker Compose, nous pouvons facilement lancer, gérer et faire évoluer nos clusters d'applications. Dans le même temps, grâce à la fonction proxy inverse de Nginx, nous pouvons réaliser un équilibrage de charge des requêtes, améliorant ainsi les performances et la disponibilité des applications. 🎜

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment vérifier si Nginx est démarré Comment vérifier si Nginx est démarré Apr 14, 2025 pm 01:03 PM

Comment confirmer si Nginx est démarré: 1. Utilisez la ligne de commande: SystemCTl Status Nginx (Linux / Unix), netStat -ano | Findstr 80 (Windows); 2. Vérifiez si le port 80 est ouvert; 3. Vérifiez le message de démarrage NGINX dans le journal système; 4. Utilisez des outils tiers, tels que Nagios, Zabbix et Icinga.

Comment configurer Nginx dans Windows Comment configurer Nginx dans Windows Apr 14, 2025 pm 12:57 PM

Comment configurer Nginx dans Windows? Installez Nginx et créez une configuration d'hôte virtuelle. Modifiez le fichier de configuration principale et incluez la configuration de l'hôte virtuel. Démarrer ou recharger nginx. Testez la configuration et affichez le site Web. Activer sélectivement SSL et configurer les certificats SSL. Définissez sélectivement le pare-feu pour permettre le trafic Port 80 et 443.

Comment configurer le nom de domaine du serveur cloud dans nginx Comment configurer le nom de domaine du serveur cloud dans nginx Apr 14, 2025 pm 12:18 PM

Comment configurer un nom de domaine NGINX sur un serveur cloud: Créez un enregistrement A pointant vers l'adresse IP publique du serveur cloud. Ajoutez des blocs d'hôtes virtuels dans le fichier de configuration Nginx, en spécifiant le port d'écoute, le nom de domaine et le répertoire racine du site Web. Redémarrez Nginx pour appliquer les modifications. Accéder à la configuration du test de nom de domaine. Autres notes: Installez le certificat SSL pour activer HTTPS, assurez-vous que le pare-feu autorise le trafic Port 80 et attendez que la résolution DNS prenne effet.

Comment vérifier si Nginx est démarré? Comment vérifier si Nginx est démarré? Apr 14, 2025 pm 12:48 PM

Dans Linux, utilisez la commande suivante pour vérifier si Nginx est démarré: SystemCTL Status Nginx Juges Basé sur la sortie de la commande: si "Active: Active (Running)" s'affiche, Nginx est démarré. Si "Active: Inactive (Dead)" est affiché, Nginx est arrêté.

Comment démarrer Nginx dans Linux Comment démarrer Nginx dans Linux Apr 14, 2025 pm 12:51 PM

Étapes pour démarrer Nginx dans Linux: Vérifiez si Nginx est installé. Utilisez SystemCTL Start Nginx pour démarrer le service NGINX. Utilisez SystemCTL Activer Nginx pour activer le démarrage automatique de Nginx au démarrage du système. Utilisez SystemCTL Status Nginx pour vérifier que le démarrage est réussi. Visitez http: // localhost dans un navigateur Web pour afficher la page de bienvenue par défaut.

Comment résoudre nginx403 Comment résoudre nginx403 Apr 14, 2025 am 10:33 AM

Comment corriger l'erreur interdite Nginx 403? Vérifier les autorisations de fichier ou de répertoire; 2. Vérifier le fichier .htaccess; 3. Vérifiez le fichier de configuration NGINX; 4. Redémarrer Nginx. D'autres causes possibles incluent les règles de pare-feu, les paramètres de Selinux ou les problèmes d'application.

Comment démarrer le serveur Nginx Comment démarrer le serveur Nginx Apr 14, 2025 pm 12:27 PM

Le démarrage d'un serveur Nginx nécessite différentes étapes en fonction des différents systèmes d'exploitation: Système Linux / Unix: Installez le package NGINX (par exemple, en utilisant Apt-Get ou Yum). Utilisez SystemCTL pour démarrer un service NGINX (par exemple, sudo systemctl start nginx). Système Windows: téléchargez et installez les fichiers binaires Windows. Démarrer Nginx à l'aide de l'exécutable Nginx.exe (par exemple, nginx.exe -c conf \ nginx.conf). Peu importe le système d'exploitation que vous utilisez, vous pouvez accéder au serveur IP

Comment résoudre l'erreur Nginx304 Comment résoudre l'erreur Nginx304 Apr 14, 2025 pm 12:45 PM

Réponse à la question: 304 Erreur non modifiée indique que le navigateur a mis en cache la dernière version de ressource de la demande du client. Solution: 1. Effacer le cache du navigateur; 2. Désactiver le cache du navigateur; 3. Configurer Nginx pour permettre le cache client; 4. Vérifier les autorisations du fichier; 5. Vérifier le hachage du fichier; 6. Désactiver le CDN ou le cache proxy inversé; 7. Redémarrez Nginx.

See all articles