# PHP 8.5 Apache Docker-Umgebung Vorkonfigurierte Docker-Umgebung auf Basis von `php:8.5-apache` inklusive selbstsigniertem SSL-Zertifikat, optimiertem OPcache und dynamischem Mail-Relay über `msmtp` (konfigurierbar per `.env`). ## Enthaltene Komponenten & Features * **Webserver:** Apache 2 mit aktiviertem `mod_rewrite` und `mod_ssl` * **PHP-Version:** PHP 8.5 * **Installierte PHP-Extensions:** * `mysqli` (MySQL-Datenbanktreiber) * `gd` (inkl. WebP- und PNG-Support) * `imagick` (ImageMagick via PECL) * `intl`, `zip`, `exif` * `opcache` (im PHP-8.5-Kern integriert und über `/usr/local/etc/php/conf.d/opcache.ini` vorkonfiguriert) * **Mail-Versand (`msmtp`):** Ersetzt das veraltete `ssmtp`. Die Konfiguration wird beim Container-Start automatisch aus den Umgebungsvariablen der `.env`-Datei generiert. --- ## Projektstruktur ```text ├── docker-compose.yaml ├── dockerfile │   ├── 000-default.conf │   ├── apache2.conf │   ├── Dockerfile │   └── php.ini └── README.md ``` > **Hinweis:** Die Konfigurationsdateien (`php.ini`, `apache2.conf`, `000-default.conf`) müssen im Ordner `dockerfile/` liegen, damit der Build-Kontext beim Kopieren (`COPY`) darauf zugreifen kann. In der `default/docker-compose.yaml` verweist `build: ../dockerfile` auf dieses Verzeichnis. --- ## Installation & Erster Start ### 1. Repository klonen ```bash git clone cd ``` ### 2. `.env` konfigurieren (Nur nötig wenn der Server E-Mails versenden soll!) Passe die Datei `default/.env` mit deinen SMTP-Zugangsdaten an: ```env SMTP_HOST=smtp.dein-provider.de SMTP_PORT=587 SMTP_USER=dein-benutzername@example.com SMTP_PASS='DeinGeheimesPasswort' SMTP_FROM=noreply@example.com SMTP_TLS=on SMTP_STARTTLS=on ``` *(Bei Nutzung von Port `465` mit implizitem TLS muss `SMTP_STARTTLS=off` gesetzt werden).* ### 3. Container bauen und starten ```bash docker compose up -d --build ``` --- ## Update Je nachdem, was aktualisiert werden soll, gibt es drei Wege: ### 1. Nur `.env` oder `docker-compose.yaml` geändert (z.B. neues SMTP-Passwort) Da `msmtp` die Konfiguration bei jedem Container-Start neu schreibt, ist **kein Neubau** des Images nötig. Es reicht, den Container neu zu erstellen: ```bash docker compose up -d ``` ### 2. Änderungen aus dem Git-Repository übernehmen (`Dockerfile` oder Configs) Wenn Änderungen am `Dockerfile`, der `php.ini` oder den Apache-Configs über Git heruntergeladen wurden: ```bash git pull docker compose up -d --build ``` ### 3. PHP-Basis-Image & Systempakete aktualisieren (Sicherheitsupdates) Docker nutzt standardmäßig den lokalen Cache für `FROM php:8.5-apache` und `apt-get`. Um die neueste Patch-Version von PHP 8.5 und aktuelle Debian-Pakete zu erzwingen: ```bash docker compose build --pull --no-cache docker compose up -d ``` *Optional – Alte, nicht mehr genutzte Docker-Images nach einem Update aufräumen:* ```bash docker image prune -f ``` --- ## E-Mail-Versand testen & Logs prüfen Um zu testen, ob der Mail-Versand über `msmtp` aus dem laufenden Container heraus funktioniert: **1. Test-Mail über die PHP-CLI senden:** ```bash docker compose exec php-apache-environment php -r "mail('empfaenger@example.com', 'Docker Test', 'Mailversand funktioniert!');" ``` **2. msmtp-Logbuch auslesen:** ```bash docker compose exec php-apache-environment cat /var/log/msmtp.log ``` Endet der Log-Eintrag mit `exitcode=EX_OK`, wurde die E-Mail erfolgreich vom SMTP-Server angenommen.