Erstellen von produktionsbereiten Docker-Umgebungen für PHP
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.
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.

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

-
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.

? 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)
- Sicherheit (minimales Bild, sichere Konfigurationen, Nicht-Root-Benutzer)
- Leistung (Opcache, JIT, Autoloaderoptimierung)
- Wartbarkeit (klare Dockerfiles, Trennung von Bedenken)
- Beobachtbarkeit (Protokolle bei STDOut, Gesundheitschecks)
Letzte Notizen
Ein produktionsbereites PHP Docker-Setup-Gleichgewicht:
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!

Heiße KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

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

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

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

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.

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.

RunthewindowsUpdatetrouBleshooterviaSettings> Update & Sicherheit> FehlerbehebungOautomatischfixcommonissues.2.

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.

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

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

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.
