Heim >Backend-Entwicklung >PHP-Tutorial >Der Goldstandard mit Docker Compose, Nginx und MariaDB: Aufbau skalierbarer Cluster von PHP-Anwendungen
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
在这个配置文件中,我们定义了三个服务: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 -dIn 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
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=3In dieser Konfiguration verwenden wir
upstream php
, um eine Datei mit dem Namen php 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-AnwendungIm 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
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.
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!