build: Docker-Setup und Apache-Konfiguration
Apache mit mod_php statt PHP-FPM plus Nginx: dadurch verhalten sich Docker und klassisches Shared Hosting gleich, es gilt dieselbe .htaccess. MariaDB liegt hinter einem Compose-Profil. Die Entwicklungspakete bleiben im Image installiert - beim Aufraeumen mit apt-get purge --auto-remove verschwindet sonst auch die von imagick benoetigte Laufzeitbibliothek. Die .htaccess im Stammverzeichnis wird nur gebraucht, wenn der Webroot nicht auf public/ gelegt werden kann; sie sperrt dann alle uebrigen Verzeichnisse.
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
#!/bin/sh
|
||||
# -------------------------------------------------------------
|
||||
# Startskript des Containers.
|
||||
# Sorgt dafuer, dass die Datenverzeichnisse existieren und dem
|
||||
# Webserver gehoeren - auch wenn ein Volume gemountet wurde.
|
||||
# -------------------------------------------------------------
|
||||
set -e
|
||||
|
||||
mkdir -p /var/www/html/data/uploads
|
||||
|
||||
if [ "$(id -u)" = "0" ]; then
|
||||
chown -R www-data:www-data /var/www/html/data 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# Wartet kurz auf die Datenbank, falls MySQL/MariaDB genutzt wird.
|
||||
if [ "${DB_DRIVER}" = "mysql" ] && [ -n "${DB_HOST}" ]; then
|
||||
echo "Warte auf Datenbank ${DB_HOST}:${DB_PORT:-3306} ..."
|
||||
i=0
|
||||
while [ "$i" -lt 30 ]; do
|
||||
if php -r '
|
||||
$host = getenv("DB_HOST"); $port = (int) (getenv("DB_PORT") ?: 3306);
|
||||
$fp = @fsockopen($host, $port, $errno, $errstr, 1);
|
||||
exit($fp === false ? 1 : 0);
|
||||
'; then
|
||||
echo "Datenbank erreichbar."
|
||||
break
|
||||
fi
|
||||
i=$((i + 1))
|
||||
sleep 1
|
||||
done
|
||||
fi
|
||||
|
||||
exec "$@"
|
||||
@@ -0,0 +1,32 @@
|
||||
; -------------------------------------------------------------
|
||||
; urlshort-qr-gen – PHP-Einstellungen im Container
|
||||
; -------------------------------------------------------------
|
||||
|
||||
expose_php = Off
|
||||
|
||||
; Logos duerfen bis 2 MB gross sein (siehe UPLOAD_MAX_BYTES).
|
||||
upload_max_filesize = 4M
|
||||
post_max_size = 8M
|
||||
memory_limit = 256M
|
||||
max_execution_time = 30
|
||||
|
||||
; Fehler ins Log, nicht in die Ausgabe.
|
||||
display_errors = Off
|
||||
log_errors = On
|
||||
error_log = /dev/stderr
|
||||
|
||||
; Sessions
|
||||
session.cookie_httponly = On
|
||||
session.cookie_samesite = "Lax"
|
||||
session.use_strict_mode = On
|
||||
session.use_only_cookies = On
|
||||
|
||||
; Zeitzone (kann per APP_TIMEZONE ueberschrieben werden)
|
||||
date.timezone = Europe/Berlin
|
||||
|
||||
; OPcache fuer eine schnelle Weiterleitung
|
||||
opcache.enable = 1
|
||||
opcache.memory_consumption = 96
|
||||
opcache.max_accelerated_files = 4000
|
||||
opcache.validate_timestamps = 1
|
||||
opcache.revalidate_freq = 15
|
||||
Reference in New Issue
Block a user