Heim >Backend-Entwicklung >PHP-Tutorial >Containerisieren Sie PHP-Anwendungen mit Docker Compose, Nginx und MariaDB

Containerisieren Sie PHP-Anwendungen mit Docker Compose, Nginx und MariaDB

王林
王林Original
2023-10-12 14:40:561390Durchsuche

使用Docker Compose、Nginx和MariaDB实现PHP应用程序的容器化

Titel: Containerisierung von PHP-Anwendungen mit Docker Compose, Nginx und MariaDB

Einführung: Mit der rasanten Entwicklung der Containerisierungstechnologie achten immer mehr Entwickler auf die Verwendung von Docker für die Anwendungsbereitstellung und -verwaltung. In diesem Artikel wird die Verwendung von Docker Compose, Nginx und MariaDB zur Implementierung der Containerisierung von PHP-Anwendungen vorgestellt und spezifische Codebeispiele gegeben, um den Lesern ein besseres Verständnis und eine bessere Übung zu ermöglichen.

  1. Einführung in Docker Compose
    Docker Compose ist ein Tool zum Definieren und Ausführen mehrerer Docker-Container. Es verwendet YAML-Dateien, um die Dienste, das Netzwerk, den Speicher usw. einer Anwendung zu konfigurieren. Mit Docker Compose können wir komplexe Multi-Container-Anwendungen einfacher definieren und verwalten.
  2. Einführung in Nginx
    Nginx ist ein leistungsstarker HTTP- und Reverse-Proxy-Server, der zur Bereitstellung statischer Inhalte und Proxy-dynamischer Inhalte verwendet werden kann. In Containeranwendungen wird Nginx häufig als Front-End-Proxyserver verwendet, der für die Annahme von Clientanfragen und deren Weiterleitung an den Back-End-Anwendungsdienst verantwortlich ist.
  3. Einführung in MariaDB
    MariaDB ist ein relationales Open-Source-Datenbankverwaltungssystem auf Basis von MySQL. Es bietet zuverlässige Leistungs- und Sicherheitsfunktionen und wird häufig in Webanwendungen und Cloud-Computing-Umgebungen eingesetzt.
  4. Architekturdesign
    Unsere containerisierte PHP-Anwendung besteht aus drei Diensten: Nginx, PHP-FPM und MariaDB. Nginx wird verwendet, um die HTTP-Anfrage des Clients zu empfangen und zu verarbeiten, dann die dynamische Anfrage an PHP-FPM weiterzuleiten und die statische Anfrage an den Client zurückzugeben. PHP-FPM ist der PHP FastCGI-Prozessmanager, der für die Verarbeitung und Interpretation von PHP-Code verantwortlich ist. MariaDB wird zum Speichern von Anwendungsdaten verwendet.

Hier ist ein Beispiel unserer Docker Compose-Konfigurationsdatei (docker-compose.yml):

version: '3'
services:
  webserver:
    image: nginx:latest
    ports:
      - 80:80
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf:ro
    depends_on:
      - php
  php:
    image: php:7.4-fpm
    volumes:
      - ./php.ini:/usr/local/etc/php/php.ini:ro
      - ./code:/var/www/html
    depends_on:
      - db
  db:
    image: mariadb:latest
    environment:
      MYSQL_ROOT_PASSWORD: your_password
      MYSQL_DATABASE: your_database
      MYSQL_USER: your_username
      MYSQL_PASSWORD: your_password
    volumes:
      - ./data:/var/lib/mysql

Wir haben drei Dienste, die durch diese Konfigurationsdatei definiert sind: Webserver, PHP und DB. Der Webserver-Dienst verwendet das Nginx-Image und ordnet Port 80 des Hosts Port 80 des Containers zu. Der PHP-Dienst verwendet das PHP-FPM-Image und mountet das Codeverzeichnis im Container. Der Datenbankdienst verwendet die MariaDB-Spiegelung und legt den Benutzernamen, das Kennwort und das Datenspeicherverzeichnis der Datenbank fest.

  1. Konfigurationsdateien und Codebeispiele
    Wir müssen außerdem die Nginx-Konfigurationsdatei (nginx.conf) und die PHP-Konfigurationsdatei (php.ini) bereitstellen. Nachfolgend finden Sie Beispiele:

nginx.conf:

worker_processes auto;

events {
    worker_connections 1024;
}

http {
    server {
        listen 80;
        
        location / {
            root /var/www/html;
            index index.php index.html index.htm;
            try_files $uri $uri/ /index.php?$query_string;
        }
        
        location ~ .php$ {
            fastcgi_pass php:9000;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PHP_VALUE "error_log=/var/log/nginx/php_errors.log";
        }
    }
}

php.ini:

date.timezone = Asia/Shanghai
upload_max_filesize = 2M
post_max_size = 8M
memory_limit = 128M

Im obigen Beispiel konfiguriert nginx.conf den Überwachungsport und die Proxy-Regeln von Nginx, um dynamische Anfragen an den PHP-Dienst weiterzuleiten. php.ini konfiguriert einige allgemeine PHP-Parameter, wie z. B. Zeitzone und Einschränkungen beim Hochladen von Dateien.

  1. Containerisierte Anwendungen ausführen
    Nachdem die Konfigurationsdatei fertig ist, können wir die Containeranwendung über den folgenden Befehl starten:
$ docker-compose up -d

Nach dem Ausführen dieses Befehls lädt Docker den Container automatisch herunter und startet ihn entsprechend der Konfigurationsdatei. Mit dem Befehl docker-compose ps können Sie laufende Container anzeigen.

  1. Zusammenfassung
    In diesem Artikel wird erläutert, wie Sie mit Docker Compose, Nginx und MariaDB die Containerisierung von PHP-Anwendungen implementieren, und es werden spezifische Codebeispiele aufgeführt. Wir hoffen, dass die Leser durch die Lektüre dieses Artikels die Containerisierungstechnologie besser verstehen und üben und die Effizienz der Anwendungsbereitstellung und -verwaltung verbessern können.

Das Obige ist nur ein einfaches Beispiel, die tatsächliche Situation kann komplexer sein und der Leser kann entsprechend seinen eigenen Bedürfnissen entsprechende Anpassungen und Erweiterungen vornehmen. Ich hoffe, dieser Artikel kann den Lesern etwas helfen!

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

Stellungnahme:
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