Inhaltsverzeichnis
✅ Verwenden Sie das rechte PHP -Basisbild
? Sichere PHP -Konfiguration
? Verwenden Sie einen Reverse Proxy (NGINX) PHP-FPM
? Optimieren Sie für Build und Laufzeit
? Euen Supervisford (optional, aber nützlich)
? Testen Sie vor der Bereitstellung
Letzte Notizen
Heim Backend-Entwicklung PHP-Tutorial Erstellen von produktionsbereiten Docker-Umgebungen für PHP

Erstellen von produktionsbereiten Docker-Umgebungen für PHP

Jul 27, 2025 am 04:32 AM
php docker

Die Verwendung des richtigen PHP-Basisbildes und die Konfiguration einer sicheren, leistungsoptimierten Docker-Umgebung ist der Schlüssel zum Erreichen der Produktion. 1. Verwenden Sie PHP: 8,3-FPM-Alpine als Grundbild, um die Angriffsfläche zu reduzieren und die Leistung zu verbessern. 2. Deaktivieren Sie gefährliche Funktionen über benutzerdefinierte Php.ini, deaktivieren Sie die Fehleranzeige und aktivieren Sie Opcache und JIT, um die Sicherheit und Leistung zu verbessern. 3.. Verwenden Sie Nginx als Reverse Proxy, um den Zugriff auf sensible Dateien einzuschränken und die PHP-Anforderungen korrekt an PHP-FPM weiterzuleiten. 4. Verwenden Sie mehrstufige Optimierungsbilder, um Entwicklungsabhängigkeiten zu entfernen, und richten Sie nicht Root-Benutzer auf, um Container auszuführen. 5. optionaler Aufsichtsbehörde zum Verwalten mehrerer Prozesse wie Cron; S. Letztendlich wird sichergestellt, dass die Umwelt sicher ist, hohe Leistung, Wartbarkeit und Beobachtbarkeit wird als Produktionsbereit bezeichnet.

Erstellen von produktionsbereiten Docker-Umgebungen für PHP

Bei der Einrichtung einer produktionsbereiteten Docker-Umgebung für PHP geht es nicht nur darum, Ihre App auszuführen, sondern um Sicherheit, Leistung, Wartung und Skalierbarkeit. Viele Tutorials halten bei "It Works Lokal" an, aber reale Produktionsumgebungen fordern mehr. Hier erfahren Sie, wie Sie ein robustes, sicheres und effizientes Docker-Setup für PHP erstellen können, das für die reale Bereitstellung bereit ist.

Erstellen von produktionsbereiten Docker-Umgebungen für PHP

✅ Verwenden Sie das rechte PHP -Basisbild

Beginnen Sie mit einem minimalen, sicheren Basisbild. Vermeiden Sie php:latest oder entwicklungsorientierte Tags wie php:8.3-cli .

Empfohlen:

Erstellen von produktionsbereiten Docker-Umgebungen für PHP
  • php:8.3-fpm-alpine für Backend Services (leicht, sicher)
  • Kombinieren Sie mit nginx in einem separaten Container zum Servieren des Webverkehrs

Warum Alpine?
Kleinere Angriffsfläche, schnellere Builds und geringere Ressourcenverbrauch. Seien Sie jedoch vorsichtig: Einige PHP -Erweiterungen erfordern möglicherweise zusätzliche Schritte für die Installation in Alpine aufgrund von Musl gegen GLIBC.

 Aus PHP: 8.3-FPM-Alpine

# Wesentliche PHP -Erweiterungen installieren (für Alpine zusammengestellt)
Apk add-no-cache \ ausführen
    nginx \
    Aufsicht \
    postgresql-dev \
    && docer-php-text-install -j $ (NPROC) \
    pdo_pgsql \
    opcache \
    && docer-php-exte-enable pdo_pgsql

Vermeiden Sie RUN apk add --update && pecl install ... sofern nicht unbedingt erforderlich ist -der Befehl erhöht die Bildgröße und erstellung die Zeit.

Erstellen von produktionsbereiten Docker-Umgebungen für PHP

? Sichere PHP -Konfiguration

Standard php.ini -Einstellungen sind nicht produktionssicher. Überschreiben sie explizit.

Erstellen Sie benutzerdefinierte Konfigurationsdateien:

 ./docker/php/php.ini
./docker/php/opcache.ini

Beispiel php.ini optimiert:

 ; Deaktivieren Sie gefährliche Funktionen
Disable_Functions = exec, passthru, Shell_exec, System, Proc_open, Popen

; Exposition begrenzen
expose_php = off
display_errors = off
log_errors = on

; Angemessene Grenzen setzen
upload_max_filesize = 16m
post_max_size = 18m
max_execution_time = 30

Opcache (kritisch für die Leistung):

 opcache.enable = 1
opcache.validate_timestamps = 0; Nur in der Produktion (verwenden Sie Rolling -Bereitstellungen, um zu löschen)
opcache.max_accelerated_files = 20000
opcache.memory_constum = 256
opcache.jit = 1205; Aktivieren Sie JIT in Php 8

Kopieren Sie diese in das Bild:

 Kopieren ./docker/php/php.ini /usr/local/etc/php/conf.d/app.ini
Kopieren ./docker/php/opcache.ini /usr/local/etc/php/conf.d/opcache.ini

? Verwenden Sie einen Reverse Proxy (NGINX) PHP-FPM

Entdecken Sie niemals Php-FPM direkt. Verwenden Sie Nginx als Reverse Proxy.

Typische Struktur:

 # Docker-compose.yml (für Staging/CI)
Version: '3.8'
Dienstleistungen:
  nginx:
    Bild: Nginx: Alpine
    Ports:
      - "80:80"
    Bände:
      - ./nginx.conf:/etc/nginx/nginx.conf
      - ./public:/var/www/html/public
    Kommt darauf ab.
      - Php

  PHP:
    bauen: .
    Bände:
      - ./:/var/www/html
    Umfeld:
      - app_env = prod

Nginx -Konfiguration Highlights:

  • Dienen nur der public/ Verzeichnis
  • Blockieren Sie den Zugriff auf .env , .git und Konfigurationsdateien
  • Richtige Header einstellen (Sicherheit, Caching)
  • Übergeben Sie PHP -Anfragen an php:9000

Beispiel Ort Block:

 Ort ~ \ .php $ {
    FASTCGI_PASS PHP: 9000;
    fastcgi_index index.php;
    fastcgi_param script_filename/var/www/html/public $ fastcgi_script_name;
    FASTCGI_PARAMS einschließen;
}

? Optimieren Sie für Build und Laufzeit

Mehrstufige Builds (falls erforderlich für Werkzeuge wie Komponist):

 # Bühnenbühne
Vom Komponist: Neueste als Komponist
Kopieren Sie Composer.json Composer.lock ./
Ausführen von Komponisten Installation-no-dev --optimize-autoloader-no-scripts

# Letzte Stufe
Aus PHP: 8.3-FPM-Alpine
Kopie - -FROM = COMPOSER/APP/VENDOR ./VENDOR
Kopie. .

Key Laufzeitoptimierungen:

  • Setzen Sie APP_ENV=prod , um Framework -Optimierungen zu aktivieren (z. B. Symfony, Laravel)
  • Verwendung --optimize-autoloader und --classmap-authoritative im Komponisten
  • Als Nicht-Root-Benutzer ausführen:
     Führen Sie adduser -d -s /bin /sh www aus
    Benutzer www

? Euen Supervisford (optional, aber nützlich)

Wenn Sie Php-FPM und Cron oder andere Daemons ausführen müssen:

 Führen Sie apk add-no-cache Supervisor aus
Kopieren ./docker/supervisord.conf /etc/supervisor/conf.d/supervisford.conf
CMD ["/usr/bin/Supervisford", "-c", "/etc/supervisor/conf.d/supervisford.conf"]

Supervisford -Konfiguration:

 [Supervisford]
nodaemon = true

[Programm: PHP-FPM]
command = php-fpm
stdout_logfile =/dev/stdout
stderr_logfile =/dev/stderr

[Programm: Cron]
command = cron -f

? Testen Sie vor der Bereitstellung

Bevor Sie es "produktionsbereit" nennen, überprüfen Sie:

  • [] Keine sensiblen Informationen in Umgebung oder Konfiguration
  • [] Fehlerprotokolle gehen zu STDOut/Stderr (für Docker -Protokollierungsfahrer)
  • [] Gesundheitsprüfung ist definiert:
     HealthCheck-interval = 30s-Zeitout = 3S-Start-period = 5s--Retries = 3 \
      Cmd curl -f http: // localhost/Health || Ausgang 1
  • [] Das Bild wird nach Sicherheitslücken gescannt (verwenden Sie docker scan oder CI -Werkzeug)
  • [] Es funktioniert ohne Volumenmontage (dh Code ist eingebettet)

  • Letzte Notizen

    Ein produktionsbereites PHP Docker-Setup-Gleichgewicht:

    • Sicherheit (minimales Bild, sichere Konfigurationen, Nicht-Root-Benutzer)
    • Leistung (Opcache, JIT, Autoloaderoptimierung)
    • Wartbarkeit (klare Dockerfiles, Trennung von Bedenken)
    • Beobachtbarkeit (Protokolle bei STDOut, Gesundheitschecks)

    Sie brauchen keine Kubernetes am ersten Tag, aber Sie brauchen eine solide Grundlage. Starten Sie eine einfache, automatische Konfiguration und testen Sie, wie sie bereits in der Produktion ist.

    Grundsätzlich: Wenn es nicht sicher, schnell und beobachtbar ist, ist es nicht produktionsbereit.

    Das obige ist der detaillierte Inhalt vonErstellen von produktionsbereiten Docker-Umgebungen für PHP. 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

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

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.

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)

Heiße Themen

PHP-Tutorial
1545
276
Edge PDF -Viewer funktioniert nicht Edge PDF -Viewer funktioniert nicht Aug 07, 2025 pm 04:36 PM

TestthepdfinanotherapptodetermineeiftheisueiswithTheFileoredge.2.Enablethebuilt-InpdfviewerByTurningOff "immerOpenpdffileSexTternal" und "DownloadPdffffiles" Inedgesetings

YII -Entwickler: Beherrschen der wesentlichen technischen Fähigkeiten YII -Entwickler: Beherrschen der wesentlichen technischen Fähigkeiten Aug 04, 2025 pm 04:54 PM

Um ein Meister von YII zu werden, müssen Sie die folgenden Fähigkeiten beherrschen: 1) Verstehen Sie die MVC -Architektur von YII, 2) die Verwendung von ActInereCordorm, 3) GII -Code -Erzeugungstools effektiv verwenden, 4) Master Yii -Überprüfungsregeln, 5) Optimieren von Datenbankabfrage -Leistung, 6) Ressourcen der Datenbankabfrage und Community -Ressourcen. Durch das Lernen und die Praxis dieser Fähigkeiten können die Entwicklungsfähigkeiten im Rahmen des YII -Frameworks umfassend verbessert werden.

VS -Code -Verknüpfung, um sich auf das Explorer -Panel zu konzentrieren VS -Code -Verknüpfung, um sich auf das Explorer -Panel zu konzentrieren Aug 08, 2025 am 04:00 AM

In VSCODE können Sie das Panel- und Bearbeitungsbereich durch Abkürzungsschlüssel schnell wechseln. Um zum linken Explorer -Feld zu springen, verwenden Sie die Strg -Verschiebung E (Windows/Linux) oder CMD Shift E (MAC). Kehren Sie in den Bearbeitungsbereich zurück, um Strg `oder ESC oder Strg 1 ~ 9 zu verwenden. Im Vergleich zum Mausbetrieb sind Tastaturverknüpfungen effizienter und unterbrechen den Codierungsrhythmus nicht. Weitere Tipps sind: Strg KCtrl E Fokus -Suchkästchen, F2 -Datei umbenennen, Datei löschen, die Öffnungsdatei eingeben, Pfeilschlüssel erweitern/kollapten.

Behoben: Windows Update konnte nicht installiert werden Behoben: Windows Update konnte nicht installiert werden Aug 08, 2025 pm 04:16 PM

RunthewindowsUpdatetrouBleshooterviaSettings> Update & Sicherheit> FehlerbehebungOautomatischfixcommonissues.2.

Gehen Sie mit gutem Beispielionieren einer Subprozesse aus Gehen Sie mit gutem Beispielionieren einer Subprozesse aus Aug 06, 2025 am 09:05 AM

Führen Sie den untergeordneten Prozess mit dem Betriebssystem/EXEC -Paket aus, erstellen Sie den Befehl über exec.Command, führen Sie ihn jedoch nicht sofort aus. 2. Führen Sie den Befehl mit .output () aus und fangen Sie Stdout an. Wenn der Exit-Code ungleich Null ist, return exec.exiterror; 3. Verwenden Sie .Start (), um den Prozess ohne Blockierung zu starten, mit .stdoutpipe () in Echtzeit aus der Ausgabe von Ausgang zu streamen; V. 5. Exec.EexitEerror muss verarbeitet werden, um den Ausgangscode und den Stderr des fehlgeschlagenen Befehls zu erhalten, um Zombie -Prozesse zu vermeiden.

Mastering Flow Control innerhalb von Foreach mit Pause, Fortsetzung und Goto Mastering Flow Control innerhalb von Foreach mit Pause, Fortsetzung und Goto Aug 06, 2025 pm 02:14 PM

Breakexitstheloopmed sofort nach der Findingingatarget, idealforstoppingTheFirstmatch.2.ContinueskipTheCrourrentiteration, nützlichFilteringitemsliketemporaryFiles

Vergleichen und kontrastieren PHP -Merkmale, abstrakte Klassen und Schnittstellen mit praktischen Anwendungsfällen. Vergleichen und kontrastieren PHP -Merkmale, abstrakte Klassen und Schnittstellen mit praktischen Anwendungsfällen. Aug 11, 2025 pm 11:17 PM

UseInterfacestodeFineContractsfornrelatedCläses und sicherstellen, dass es sich um die Kenntnisse handelt

Python -Überprüfung, ob die Zeichenfolge Beispiel ist Python -Überprüfung, ob die Zeichenfolge Beispiel ist Aug 06, 2025 am 07:42 AM

ISDIGIT () ist nur für positive Ganzzahlen anwendbar und unterstützt keine Dezimalstellen, negative Zahlen und wissenschaftliche Notationsmethoden. 2. isnumeric () unterstützt mehr Unicode -Zahlen wie Brüche, unterstützt jedoch keine Dezimalpunkte und negativen Vorzeichen; 3.. Ersetzen Sie in Kombination durch ISDIGIT können Ganzzahlen und Dezimalstellen beurteilen, unterstützt jedoch keine wissenschaftlichen Notationsmethoden. 4. Versuchs-Versuch-Float-Konvertierung ist die allgemeinste Methode, die Ganzzahlen, Dezimalstellen, negative Zahlen und wissenschaftliche Notationsmethoden unterstützt und für allgemeine Szenarien empfohlen wird. 5. Regelmäßige Ausdrücke können das Zahlenformat genau steuern, sind jedoch kompliziert zu schreiben und fördern zu Fehlern. Zusammenfassung: Die praktischste Methode ist die vierte Methode, die einfach und umfassend verschiedene numerische Formen unterstützt und mit einem vollständigen Satz endet.

See all articles