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
在这个配置文件中,我们定义了三个服务: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; } } }
在这个配置中,我们使用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
在这个Dockerfile中,我们使用官方的PHP 7.4-fpm镜像作为基础,设定工作目录为/var/www/html
,然后将主机的应用程序代码复制到容器中。最后,我们使用apt-get
docker-compose up -d
./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
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
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 PHPDans 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
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
.
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!