sandrodach c53748cb5f
Docker Build, Test & Push / Build, Test & Push (8.5) (push) Failing after 9s
Merge pull request 'again' (#2) from main into 8.5
Reviewed-on: sandrodach/webhosting#2
2026-10-23 23:44:03 +02:00
2026-10-23 23:37:58 +02:00
2026-10-21 20:59:58 +02:00
2026-10-21 21:10:27 +02:00
2026-10-21 21:10:27 +02:00
2026-10-21 21:08:48 +02:00

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

├── 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

git clone <REPOSITORY-URL>
cd <REPOSITORY-ORDNER>

2. .env konfigurieren (Nur nötig wenn der Server E-Mails versenden soll!)

Passe die Datei default/.env mit deinen SMTP-Zugangsdaten an:

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

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:

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:

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:

docker compose build --pull --no-cache
docker compose up -d

Optional – Alte, nicht mehr genutzte Docker-Images nach einem Update aufräumen:

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:

docker compose exec php-apache-environment php -r "mail('empfaenger@example.com', 'Docker Test', 'Mailversand funktioniert!');"

2. msmtp-Logbuch auslesen:

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.

S
Description
No description provided
Readme
116 KiB
0 Stars 0 Watchers 0 Forks
Languages
Dockerfile 100%