Was tatsächlich in einem PHP-Image landet — und welche Teile du selbst bestimmst.
PHP-Extension
#
Erweiterung, ext-, Modul, intl, gd, pdo_mysql, redis
Ein kompiliertes Add-on, das PHP zusätzliche Fähigkeiten gibt, etwa pdo_mysql für MySQL, intl für Internationalisierung oder gd für Bilder. Pakete in deiner composer.json deklarieren als ext-…-Requirement, welche sie brauchen. Manche Extensions sind fest in PHP eingebaut, andere kommen separat dazu.
Bei customcontainer
Wir lesen die benötigten Extensions aus deiner composer.lock, und du kannst jede per Klick hinzufügen oder entfernen. Jede Extension, die du weglässt, ist eine weniger zum Patchen.
Siehe auch:
Shared Library, Angriffsfläche, composer.lock
Mehr dazu →
PHP CLI
#
Kommandozeile, php-Binary
PHP auf der Kommandozeile: php script.php, php artisan, bin/console, Composer, PHPUnit oder ein Queue-Worker. Ein CLI-Container führt einen Befehl aus und endet, wenn der Befehl endet.
Bei customcontainer
Hak „CLI Package“ an, und das Image startet standardmäßig php — genau richtig für Worker, Cronjobs und CI.
Siehe auch:
PHP-FPM, Container-Definition
PHP-FPM
#
FastCGI Process Manager, FPM, php-fpm
Der Prozessmanager, der PHP für Web-Requests ausführt. Ein Webserver wie nginx, Caddy oder Apache nimmt den HTTP-Request an und reicht ihn per FastCGI an PHP-FPM weiter. In Container-Setups laufen Webserver und PHP-FPM meist in zwei getrennten Containern.
Bei customcontainer
Hak „FPM Package“ an, und das Image startet php-fpm und lauscht auf Port 9000 auf deinen Webserver.
Siehe auch:
PHP CLI, Port-Mapping
composer.lock
#
Lock-Datei, composer.json
Die Datei, in der Composer die exakte Version jedes installierten Pakets festhält. Sie listet auch, welche PHP-Extensions diese Pakete voraussetzen — und ist damit die verlässlichste Beschreibung dessen, was deine Anwendung zum Laufen braucht.
Bei customcontainer
Paste sie auf der Startseite rein, und wir leiten die Extension-Liste daraus ab — kein Raten, kein vergessenes ext--Requirement.
Siehe auch:
PHP-Extension, Container-Definition
Distribution
#
Distro, Linux-Distribution, Rocky Linux, Debian, Alpine
Die Linux-Variante, aus der die Dateien in einem Image stammen — Debian, Alpine, Rocky Linux und so weiter. Sie bestimmt, woher die Systembibliotheken kommen, wie schnell sie Security-Fixes bekommen und wie lange ein Release unterstützt wird.
Bei customcontainer
Unsere Images bauen wir derzeit auf Rocky Linux 9, einer Enterprise-Distribution mit langen Support-Zyklen. Paketmanager und Tools der Distribution sind nicht drin — nur die Dateien, die PHP tatsächlich benutzt.
Siehe auch:
RPM-Paket, Base Image
RPM-Paket
#
Paket, rpm, dnf
Das Paketformat von Red-Hat-artigen Distributionen wie Rocky Linux. Jede Bibliothek und jede PHP-Extension kommt als Paket mit Name, Version und Release-Nummer — damit lässt sich exakt sagen, was installiert ist und wann es sich geändert hat.
Bei customcontainer
Jeder Build hält die exakten Paketversionen fest, die er enthält. Daraus speisen sich deine Build-Historie und der Update-Feed.
Siehe auch:
Distribution, Update-Feed
Shared Library
#
Systembibliothek, Bibliothek, .so-Datei, libxml2, OpenSSL, ImageMagick
Code, den sich mehrere Programme teilen, statt dass jedes seine eigene Kopie mitbringt — OpenSSL für Verschlüsselung, libxml2 für XML, ImageMagick für Bilder. Viele PHP-Extensions sind nur eine dünne Hülle um so eine Bibliothek. Eine Sicherheitslücke in der Bibliothek ist damit eine Sicherheitslücke in deiner PHP-Anwendung.
Bei customcontainer
Der Layer einer Extension enthält die Bibliotheken, gegen die sie gelinkt ist. Lässt du die Extension weg, verschwinden ihre Bibliotheken mit.
Siehe auch:
PHP-Extension, CVE
Locale
#
glibc-Locale, setlocale, de_DE, Spracheinstellungen, Gebietsschema
Sprach- und Regionaleinstellungen auf Systemebene: wie Datum, Zahlen und Währungen formatiert werden und wie Text sortiert wird. PHP-Funktionen wie setlocale() oder strftime() funktionieren nur mit Locales, die im Image tatsächlich installiert sind.
Bei customcontainer
Jedes Image enthält C.utf8. Weitere Locales, etwa Deutsch oder Französisch, fügst du im Konfigurator hinzu.
Siehe auch:
Zeitzonendaten
Zeitzonendaten
#
tzdata, Zeitzone, timezone, date.timezone
Die Datenbank der Zeitzonen der Welt samt ihrer Sommerzeitregeln. Ohne sie kennt ein Container nur UTC, und die Umrechnung eines Zeitstempels nach „Europe/Berlin“ auf Systemebene geht schief.
Bei customcontainer
Optional: Hak „Include timezones“ an, dann kommt der tzdata-Layer dazu.
Siehe auch:
Locale
Shell
#
sh, bash, BusyBox, docker exec, Kommandozeile
Eine Kommandozeile im Container — das, was du mit docker exec -it … sh bekommst. Praktisch zum Debuggen, in Produktion aber genauso praktisch für einen Angreifer. Viele minimale Images kommen deshalb ohne.
Bei customcontainer
Optional: Hak „Include shell“ an, dann kommt BusyBox dazu — ein einzelnes kleines Programm, das sh und die üblichen Grundbefehle mitbringt.
Siehe auch:
Angriffsfläche, Container