Horizontale Skalierung von PHP-Anwendungen mit Docker Compose, Nginx und MariaDB

WBOY
Freigeben: 2023-10-12 12:00:01
Original
1401 Leute haben es durchsucht

通过Docker Compose、Nginx和MariaDB实现PHP应用程序的水平扩展

Horizontale Erweiterung von PHP-Anwendungen durch Docker Compose, Nginx und MariaDB

Mit der Entwicklung des Internets und der zunehmenden Komplexität von Anwendungen ist die effiziente Erweiterung der Leistung von Anwendungen zu einem wichtigen Thema geworden. Bei der horizontalen Skalierung handelt es sich um eine Lösung, die die Verarbeitungsleistung einer Anwendung durch das Hinzufügen von Serverinstanzen erhöht. In diesem Artikel werde ich vorstellen, wie man mit Docker Compose, Nginx und MariaDB eine horizontale Skalierung von PHP-Anwendungen erreicht, und spezifische Codebeispiele bereitstellen.

Umgebungsvorbereitung:
Bevor wir beginnen, müssen wir einige Umgebungen vorbereiten, einschließlich Maschinen, auf denen Docker und Docker Compose installiert sind. Wenn Sie diese Tools noch nicht installiert haben, finden Sie die entsprechende Installationsanleitung auf der offiziellen Website.

Schritt 1: Docker Compose-Datei erstellen
Erstellen Sie zunächst eine Datei namens docker-compose.yml und definieren Sie darin unseren Dienst. Unten sehen Sie den Inhalt einer Beispiel-Kompositionsdatei:

version: '3.7'
services:
  web:
    build: ./web
    ports:
      - 80:80
    networks:
      - app-net
    depends_on:
      - db
  db:
    image: mariadb
    environment:
      - MYSQL_ROOT_PASSWORD=your_password
    networks:
      - app-net
networks:
  app-net:
Nach dem Login kopieren

Im obigen Beispiel haben wir zwei Dienste definiert: web und db. Der Webdienst wird zum Ausführen von Nginx- und PHP-Anwendungen verwendet, und der Datenbankdienst wird zum Ausführen der MariaDB-Datenbank verwendet.

Schritt 2: Dockerfile für Nginx- und PHP-Anwendungen erstellen
Im vorherigen Schritt haben wir den Build-Pfad des Webdienstes als ./web angegeben. Jetzt müssen wir in diesem Verzeichnis eine Docker-Datei erstellen, um Images von Nginx- und PHP-Anwendungen zu erstellen. Hier ist ein einfaches Dockerfile-Beispiel:

FROM nginx:latest

# 安装PHP和一些扩展
RUN apt-get update && 
    apt-get install -y php7.4-cli php7.4-fpm php7.4-mysql

# 复制PHP应用程序到容器中
COPY app /var/www/html

# 配置Nginx
COPY nginx.conf /etc/nginx/nginx.conf

# 启动Nginx和PHP-FPM
CMD service php7.4-fpm start && nginx -g "daemon off;"
Nach dem Login kopieren

Im obigen Beispiel verwenden wir nginx:latest als Basis-Image und installieren darin PHP und einige gängige Erweiterungen. Anschließend haben wir die PHP-Anwendung in den Container kopiert und eine angepasste nginx.conf-Datei kopiert.

Schritt 3: Nginx-Konfigurationsdatei erstellen
In der Docker-Datei im vorherigen Schritt haben wir eine angepasste nginx.conf-Datei verwendet. Jetzt müssen wir diese Datei im Verzeichnis ./web erstellen und die Nginx-Konfiguration definieren. Unten ist der Inhalt einer Beispieldatei nginx.conf:

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    server {
        listen  80;
        server_name  localhost;
        root  /var/www/html;
        index  index.php index.html;

        location ~ .php$ {
            fastcgi_pass  web:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include  fastcgi_params;
        }

        location / {
            try_files  $uri $uri/ /index.php?$query_string;
        }
    }
}
Nach dem Login kopieren

Im obigen Beispiel definieren wir einen virtuellen Host für Nginx und leiten die Anfrage an den PHP-FPM-Container namens web weiter.

Schritt 4: Erstellen Sie eine PHP-Anwendung
In der Konfigurationsdatei nginx.conf im vorherigen Schritt haben wir das Stammverzeichnis der PHP-Anwendung als /var/www/html angegeben. Jetzt müssen wir einen Ordner namens app im Verzeichnis ./web erstellen und den Code der PHP-Anwendung darin ablegen.

Schritt 5: Container-Cluster starten
Nach Abschluss der oben genannten Vorbereitungen können wir nun den Container-Cluster starten. Geben Sie im Terminal das Verzeichnis ein, in dem sich docker-compose.yml befindet, und führen Sie den folgenden Befehl aus:

docker-compose up -d
Nach dem Login kopieren

Dieser Befehl startet die Web- und Datenbankdienste und verbindet sie mit dem Netzwerk namens app-net. Der Webdienst bindet Port 80 des Hostcomputers, um HTTP-Anfragen von außen zu empfangen.

Zu diesem Zeitpunkt haben wir Docker Compose, Nginx und MariaDB erfolgreich eingesetzt, um eine horizontale Skalierung von PHP-Anwendungen zu erreichen. Jetzt können wir die Anwendung mit dem folgenden Befehl skalieren:

docker-compose up --scale web=n
Nach dem Login kopieren

wobei n die Anzahl der zu skalierenden Webdienstinstanzen ist.

Zusammenfassung:
Dieser Artikel stellt die Verwendung von Docker Compose, Nginx und MariaDB vor, um eine horizontale Erweiterung von PHP-Anwendungen zu erreichen, und bietet spezifische Codebeispiele. Durch den Einsatz dieser Tools können wir die Leistung unserer Anwendungen schnell und einfach skalieren, um den wachsenden Benutzeranforderungen gerecht zu werden. Ich hoffe, dass dieser Artikel für alle in der Praxis hilfreich sein kann.

Das obige ist der detaillierte Inhalt vonHorizontale Skalierung von PHP-Anwendungen mit Docker Compose, Nginx und MariaDB. 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!