Heim Backend-Entwicklung PHP-Tutorial Best Practices für Docker Compose, Nginx und MariaDB: Hochverfügbares PHP-Anwendungsarchitekturdesign

Best Practices für Docker Compose, Nginx und MariaDB: Hochverfügbares PHP-Anwendungsarchitekturdesign

Oct 12, 2023 am 11:33 AM
docker nginx mariadb

Docker Compose、Nginx和MariaDB的最佳实践:高可用PHP应用程序架构设计

Best Practices für Docker Compose, Nginx und MariaDB: Hochverfügbares PHP-Anwendungsarchitekturdesign

Einführung:
Im heutigen Internetzeitalter wird die Erstellung hochverfügbarer Anwendungen immer wichtiger. Da die Zahl der Internetnutzer zunimmt, werden Anwendungsleistung, Zuverlässigkeit und Skalierbarkeit zu entscheidenden Faktoren. In diesem Artikel wird erläutert, wie Sie mit Docker Compose, Nginx und MariaDB eine hochverfügbare PHP-Anwendungsarchitektur entwerfen, und es werden spezifische Codebeispiele bereitgestellt.

Teil Eins: Architekturübersicht
Wir möchten eine hochverfügbare PHP-Anwendung erstellen, die die folgenden Anforderungen erfüllen muss:

  1. Hohe Zuverlässigkeit: Eine Anwendung, die eine hohe Verfügbarkeit bieten kann, wenn der Server ausfällt oder das Netzwerk abnormal ist automatisch zum Backup-Server wechseln.
  2. Skalierbarkeit: Kann die Kapazität der Anwendung je nach Bedarf dynamisch skalieren, um plötzliche hohe gleichzeitige Zugriffe zu bewältigen.
  3. Leistungsoptimierung: Verbessern Sie die Anwendungsleistung und Reaktionsfähigkeit, indem Sie Nginx als Reverse-Proxy-Server und Load Balancer verwenden.
  4. Datenbankzuverlässigkeit: Verwenden Sie MariaDB als Datenbank Ihrer Anwendung und stellen Sie die Datenzuverlässigkeit und -konsistenz sicher.

Teil 2: Erstellen eines Docker-Images
Bevor wir eine hochverfügbare PHP-Anwendung erstellen, müssen wir zunächst die Anwendung und alle Abhängigkeiten in ein Docker-Image packen. Sie können eine Docker-Datei verwenden, um den Erstellungsprozess eines Docker-Images zu definieren.

Hier ist eine Beispiel-Docker-Datei:

# 使用基础PHP镜像
FROM php:7.4-fpm

# 安装PHP依赖项
RUN apt-get update && apt-get install -y 
    git 
    zip 
    curl 
    libpng-dev 
    libonig-dev 
    libxml2-dev 
    && docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd

# 设置工作目录
WORKDIR /var/www/html

# 将应用程序复制到工作目录
COPY . .

# 安装依赖项
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN composer install --no-scripts --no-autoloader

# 自动生成Autoload文件
RUN composer dump-autoload --optimize

# 修改文件权限
RUN chown -R www-data:www-data /var/www/html/storage

# 启动PHP-FPM服务器
CMD ["php-fpm"]

# 暴露端口
EXPOSE 9000
Nach dem Login kopieren

Mit der obigen Docker-Datei können wir ein Docker-Image erstellen, das die Anwendung und alle Abhängigkeiten enthält. Das Image kann mit dem folgenden Befehl erstellt werden:

docker build -t myapp .
Nach dem Login kopieren

Teil Drei: Aufbau der Architektur mit Docker Compose
Als Nächstes verwenden wir Docker Compose, um die gesamte hochverfügbare PHP-Anwendungsarchitektur zu definieren und zu verwalten. Docker Compose ist ein Tool zum Definieren und Ausführen von Docker-Anwendungen mit mehreren Containern.

Das Folgende ist eine Beispieldatei für docker-compose.yaml:

version: '3'
services:
  app:
    build: 
      context: .
      dockerfile: Dockerfile
    volumes:
      - .:/var/www/html
    ports:
      - 9000
    networks:
      - my-network
  nginx:
    image: nginx
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
      - ./site.conf:/etc/nginx/conf.d/default.conf
    ports:
      - 80:80
    depends_on:
      - app
    networks:
      - my-network
  db:
    image: mariadb
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 'password'
    networks:
      - my-network

networks:
  my-network:
Nach dem Login kopieren

In der Datei docker-compose.yaml des obigen Beispiels definieren wir drei Dienste: app, nginx und db. Unter ihnen ist der App-Service das PHP-Anwendungsimage, das wir zuvor erstellt haben. Der Nginx-Dienst verwendet das offizielle Image von Nginx. Der DB-Dienst ist das offizielle Image von MariaDB.

Wir definieren außerdem ein Netzwerk namens my-network, um diese drei Dienste zu verbinden.

Teil 4: Nginx als Reverse-Proxy-Server und Load-Balancer konfigurieren
Um die Leistung und Reaktionsgeschwindigkeit der Anwendung zu verbessern, verwenden wir Nginx als Reverse-Proxy-Server und Load-Balancer.

Das Folgende ist ein Beispiel für eine nginx.conf-Datei:

user www-data;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;

events {
    worker_connections 1024;
    multi_accept on;
}

http {
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    
    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    access_log /var/log/nginx/access.log combined;

    gzip on;
    gzip_disable "msie6";

    gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 6;
    gzip_buffers 16 8k;
    gzip_http_version 1.1;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    include /etc/nginx/conf.d/*.conf;
}
Nach dem Login kopieren

Im obigen Beispiel haben wir die Konfiguration von Nginx angegeben. Als nächstes müssen wir eine Site-Konfiguration für Nginx definieren.

Das Folgende ist ein Beispiel für eine site.conf-Datei:

server {
    listen 80;
    server_name myapp.example.com;

    location / {
        proxy_pass http://app:9000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        client_max_body_size 100M;

        proxy_buffering off;
        proxy_request_buffering off;
    }
}
Nach dem Login kopieren

Im obigen Beispiel haben wir einen virtuellen Nginx-Host definiert, um alle HTTP-Anfragen an den 9000-Port des App-Dienstes weiterzuleiten.

Teil 5: Architektur ausführen
Verwenden Sie den folgenden Befehl, um die von uns definierte hochverfügbare PHP-Anwendungsarchitektur zu starten:

docker-compose up -d
Nach dem Login kopieren

Jetzt wurde unsere hochverfügbare PHP-Anwendung erfolgreich ausgeführt. Die Benutzerfreundlichkeit und Leistung der Anwendung können Sie unter http://myapp.example.com testen.

Fazit:
Durch die Verwendung von Docker Compose, Nginx und MariaDB können wir eine hochverfügbare PHP-Anwendungsarchitektur entwerfen und erstellen. Docker Compose kann uns bei der Definition und Verwaltung von Multi-Container-Anwendungen helfen, Nginx kann leistungsstarke Reverse-Proxy- und Lastausgleichsfunktionen bereitstellen und MariaDB kann zuverlässige und stabile Datenbankdienste bereitstellen. Durch diese Architektur können wir die Verfügbarkeit, Zuverlässigkeit und Leistung von Anwendungen verbessern und den Benutzeranforderungen an qualitativ hochwertige Anwendungen gerecht werden.

Das obige ist der detaillierte Inhalt vonBest Practices für Docker Compose, Nginx und MariaDB: Hochverfügbares PHP-Anwendungsarchitekturdesign. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So aktualisieren Sie das Bild von Docker So aktualisieren Sie das Bild von Docker Apr 15, 2025 pm 12:03 PM

Die Schritte zur Aktualisierung eines Docker -Images sind wie folgt: Ziehen Sie das neueste Bild -Tag. Neues Bild Löschen Sie das alte Bild für ein bestimmtes Tag (optional) den Container neu (falls erforderlich) neu starten Sie neu (falls erforderlich).

So verwenden Sie Docker Desktop So verwenden Sie Docker Desktop Apr 15, 2025 am 11:45 AM

Wie benutze ich Docker Desktop? Docker Desktop ist ein Werkzeug zum Ausführen von Docker -Containern auf lokalen Maschinen. Zu den zu verwendenden Schritten gehören: 1.. Docker Desktop installieren; 2. Start Docker Desktop; 3.. Erstellen Sie das Docker -Bild (mit Dockerfile); 4. Build Docker Image (mit Docker Build); 5. Docker -Container ausführen (mit Docker Run).

So verlassen Sie den Container mit Docker So verlassen Sie den Container mit Docker Apr 15, 2025 pm 12:15 PM

Vier Möglichkeiten zum Beenden von Docker Container: Verwenden Sie Strg D im Befehl Container Terminal ENGEBOT IM Container Terminal verwenden Sie Docker Stop & lt; container_name & gt; Befehl verwenden Sie Docker Kill & lt; container_name & gt; Befehl im Host -Terminal (Force Exit)

So kopieren Sie Dateien in Docker nach außen So kopieren Sie Dateien in Docker nach außen Apr 15, 2025 pm 12:12 PM

Methoden zum Kopieren von Dateien in externen Hosts in Docker: Verwenden Sie den Befehl Docker CP: Docker CP [Optionen] & lt; Containerpfad & gt; & lt; Host -Pfad & gt;. Verwenden von Datenvolumina: Erstellen Sie ein Verzeichnis auf dem Host und verwenden Sie den Parameter -V, um das Verzeichnis in den Container zu montieren, um den Container zu erstellen, um eine bidirektionale Dateisynchronisation zu erreichen.

So sehen Sie den Docker -Prozess So sehen Sie den Docker -Prozess Apr 15, 2025 am 11:48 AM

Docker Process Viewing -Methode: 1. Docker Cli -Befehl: Docker PS; 2. SYSTEMD CLI -Befehl: SystemCTL Status Docker; 3.. Docker Compose CLI Command: Docker-Compose PS; 4. Process Explorer (Windows); 5. /proc -Verzeichnis (Linux).

So starten Sie Docker neu So starten Sie Docker neu Apr 15, 2025 pm 12:06 PM

So starten Sie den Docker -Container neu: Holen Sie sich die Container -ID (Docker PS); Stop den Container (Docker Stop & lt; Container_id & gt;); Starten Sie den Container (Docker start & lt; container_id & gt;); Stellen Sie sicher, dass der Neustart erfolgreich ist (Docker PS). Andere Methoden: Docker Compose (Docker-Compose Neustart) oder Docker-API (siehe Docker-Dokumentation).

So speichern Sie das Docker -Bild So speichern Sie das Docker -Bild Apr 15, 2025 am 11:54 AM

Um das Bild in Docker zu speichern, können Sie den Befehl docker comit verwenden, um ein neues Bild zu erstellen, das den aktuellen Status des angegebenen Containers Syntax: Docker Commit [Optionen] Container -ID -Bildname enthält. Um das Bild im Repository zu speichern, können Sie den Befehl Docker Push, Syntax: Docker -Push -Bildname [: Tag] verwenden. Um gespeicherte Bilder zu importieren, können Sie den Befehl Docker Pull, Syntax: Docker Pull Bildname [: Tag] verwenden.

So starten Sie MySQL von Docker So starten Sie MySQL von Docker Apr 15, 2025 pm 12:09 PM

Der Prozess des Startens von MySQL in Docker besteht aus den folgenden Schritten: Ziehen Sie das MySQL -Image zum Erstellen und Starten des Containers an, setzen

See all articles