Der Goldstandard mit Docker Compose, Nginx und MariaDB: Aufbau skalierbarer Cluster von PHP-Anwendungen

王林
Freigeben: 2023-10-12 13:14:01
Original
686 Leute haben es durchsucht

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

Der Goldstandard von Docker Compose, Nginx und MariaDB: Erstellen skalierbarer PHP-Anwendungscluster

Einführung
Mit der kontinuierlichen Entwicklung von Internetanwendungen müssen immer mehr Websites und Dienste große Mengen gleichzeitiger Anfragen und Daten verarbeiten Der Aufbau skalierbarer Anwendungscluster ist zu einem heißen Thema geworden. In diesem Artikel erfahren Sie, wie Sie mit Docker Compose, Nginx und MariaDB einen skalierbaren Cluster von PHP-Anwendungen erstellen. Anhand spezifischer Codebeispiele zeigen wir, wie dieser Cluster konfiguriert und verwaltet wird und wie eine dynamische Erweiterung und Lastverteilung der Ressourcen erreicht wird.

1. Docker Compose-Konfiguration
Docker Compose ist ein Tool zum Definieren und Ausführen mehrerer Docker-Container. Es kann Abhängigkeiten und Netzwerkverbindungen zwischen Containern über eine Konfigurationsdatei verwalten. In unserem Anwendungscluster verwenden wir Docker Compose, um drei Container zu definieren und zu verwalten: Nginx, PHP-Anwendung und MariaDB.

Zuerst müssen wir eine docker-compose.yml-Datei erstellen und unseren Container-Service definieren. 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
Nach dem Login kopieren

在这个配置文件中,我们定义了三个服务: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;
        }
    }
}
Nach dem Login kopieren

在这个配置中,我们使用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
Nach dem Login kopieren

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

docker-compose up -d
Nach dem Login kopieren

In dieser Konfigurationsdatei definieren wir drei Dienste: Nginx, PHP und MariaDB. Der Nginx-Container verwendet das offizielle Nginx-Image und ordnet den Port 80 des Containers dem Port 80 des Hosts zu. Der PHP-Container wird mit unserer eigenen Docker-Datei erstellt und mountet das Verzeichnis ./php des Hosts im Verzeichnis /var/www/html des Containers. Der MariaDB-Container verwendet das offizielle MariaDB-Image und verfügt über ein Root-Passwort.


2. Nginx-Konfiguration

Nginx ist ein Hochleistungs-Webserver und Reverse-Proxy-Server. Er kann zur direkten Bereitstellung statischer Ressourcen oder als Reverse-Proxy für Back-End-PHP-Anwendungen verwendet werden. In unserem Cluster übernimmt Nginx die Rolle der Weiterleitung von Anfragen an den Backend-PHP-Container.

Wir müssen einen virtuellen Host im Nginx-Container konfigurieren, um Anfragen an den Container der PHP-Anwendung weiterzuleiten. In der Nginx-Konfigurationsdatei können wir die Direktive upstream verwenden, um die Adresse des Back-End-PHP-Containers zu definieren, und die Direktive proxy_pass verwenden, um die Anfrage an diese Adresse weiterzuleiten .

Wir können der Datei nginx.conf die folgende Konfiguration hinzufügen:

docker-compose up -d --scale php=3
Nach dem Login kopieren

In dieser Konfiguration verwenden wir upstream php, um eine Datei mit dem Namen php < zu definieren /code>s Backend-Adresse und leiten Sie die Anfrage an Port 9000 dieser Adresse weiter. Dann richten wir in einem <code>server-Block Nginx so ein, dass es Port 80 überwacht und alle Anfragen über die proxy_pass-Direktive an den Back-End-PHP-Container weiterleitet.

3. Konfiguration der PHP-Anwendung

Im Container der PHP-Anwendung müssen wir den PHP-Interpreter und den Anwendungscode konfigurieren. Wir können diesen Container über eine benutzerdefinierte Docker-Datei erstellen und während des Erstellungsprozesses die erforderlichen Abhängigkeiten und Erweiterungen installieren.

Das Folgende ist der Inhalt einer Beispiel-Dockerfile.php-Datei:

docker-compose down
Nach dem Login kopieren

In dieser Docker-Datei verwenden wir das offizielle PHP 7.4-fpm-Image als Basis und setzen das Arbeitsverzeichnis auf /var/www/html und kopiert dann den Anwendungscode des Hosts in den Container. Schließlich haben wir einige PHP-Erweiterungen mit dem Befehl <code>apt-get installiert.

4. Clusterbereitstellung und -verwaltung🎜Nach Abschluss der obigen Konfiguration können wir Docker Compose verwenden, um den gesamten Cluster zu starten und eine dynamische Erweiterung und einen Lastausgleich der Ressourcen zu erreichen. 🎜🎜In der Befehlszeile können wir den folgenden Befehl verwenden, um den Cluster zu starten: 🎜rrreee🎜Dieser Befehl startet alle Container und stellt sie in ein separates Netzwerk, damit sie miteinander kommunizieren können. Nginx überwacht Port 80 des Host-Computers und leitet die Anfrage an den PHP-Container im Backend weiter. 🎜🎜Wenn wir unseren Anwendungscluster erweitern möchten, können wir den folgenden Befehl verwenden, um weitere PHP-Container zu starten: 🎜rrreee🎜Dieser Befehl startet 3 PHP-Container und erweitert dadurch unseren Anwendungscluster. Nginx implementiert automatisch den Lastausgleich basierend auf der Anzahl der Backend-Container. 🎜🎜Wenn wir den Cluster stoppen müssen, können wir den folgenden Befehl verwenden: 🎜rrreee🎜Dieser Befehl stoppt und löscht alle Container und Netzwerke. 🎜🎜Fazit🎜Dieser Artikel stellt vor, wie Sie mit Docker Compose, Nginx und MariaDB einen skalierbaren PHP-Anwendungscluster erstellen, und zeigt die Konfigurations- und Verwaltungsmethoden anhand spezifischer Codebeispiele. Durch die Verwendung von Docker Compose können wir unsere Anwendungscluster einfach starten, verwalten und skalieren. Gleichzeitig können wir mit der Reverse-Proxy-Funktion von Nginx einen Lastausgleich für Anfragen erreichen und so die Anwendungsleistung und -verfügbarkeit verbessern. 🎜

Das obige ist der detaillierte Inhalt vonDer Goldstandard mit Docker Compose, Nginx und MariaDB: Aufbau skalierbarer Cluster von PHP-Anwendungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!