Deliver the full Docker stack for Bloc 5 DevOps (Cr 7.c.3 and 7.c.4):
- docker/apache/ Custom httpd:2.4-alpine with hardened main config,
MPM event tuning and 3 vhosts (healthz, kiosk static,
admin reverse FCGI to wakdo-app:9000). Kiosk vhost
explicitly denies .php to enforce Bloc 1 isolation.
- docker/php-fpm/ Custom php:8.3-fpm-alpine3.20 with pdo_mysql, opcache,
intl, exif, zip and tini for signal handling.
Dynamic pool 3-10 workers listening on TCP 9000.
- docker/cron/ Custom alpine:3.20 with dcron, mariadb-client, gzip.
Nightly mysqldump at 03h00 with 14-day rotation and
512-byte sanity check. Purge and stats jobs templated.
- docker-compose.yml 4 services orchestrated on 2 networks (internal
bridge + external reverse-proxy). 2 named volumes
for DB and uploads, bind-mount for backups.
Traefik labels for 2 routers with HTTPS redirect.
Makefile adds `make backup` (manual dump) and `make backup-ls`.
.gitignore adds /var/ for backup bind-mount path.
docs/journal/2026-04-24--infra-docker.md documents 5 decisions with
alternatives, maps 16 RNCP criteria to artefacts and prepares 6 jury Q&A.
Validated: `docker compose config --quiet` passes. Smoke test deferred
to next session (requires server .env).
29 lines
1.3 KiB
Text
29 lines
1.3 KiB
Text
# Wakdo - crontab du conteneur wakdo-cron
|
|
#
|
|
# Fenetre de maintenance : 01h30 -> 09h30 (service client 10h00 -> 01h00).
|
|
# Toutes les heures sont en Europe/Paris (CRON_TIMEZONE dans .env).
|
|
# Format : m h dom mon dow command
|
|
#
|
|
# Les scripts ecrivent leurs logs dans /proc/1/fd/2 pour que docker logs
|
|
# remonte la sortie. Les erreurs doivent faire un exit != 0 pour que crond
|
|
# les signale.
|
|
|
|
# Minuit-45 : decalage du tout debut de fenetre, mais apres que le dernier
|
|
# ticket de soiree soit parti en cuisine. Ne fait rien pour l'instant.
|
|
# Garde en template pour une future invalidation de cache.
|
|
# 45 0 * * * /scripts/purge-cache.sh 2>&1
|
|
|
|
# 03h00 : dump BDD complet, compresse et rotate (garde 14 derniers).
|
|
0 3 * * * /scripts/backup-db.sh 2>&1
|
|
|
|
# Toutes les 15 min pendant la fenetre de maintenance : purge des sessions
|
|
# PHP expirees cote BDD (pas les sessions systeme qui sont en /tmp du conteneur
|
|
# wakdo-app, donc ephemeres par nature). A activer quand la table sessions
|
|
# existera (P2). En l'etat, template.
|
|
# */15 2-9 * * * /scripts/purge-expired-sessions.sh 2>&1
|
|
|
|
# 04h30 : agregations statistiques (top produits, CA par heure, etc.).
|
|
# Template, a activer quand les tables stats existeront (P3-P4).
|
|
# 30 4 * * * /scripts/aggregate-stats.sh 2>&1
|
|
|
|
# Ligne vide finale requise par certaines implementations cron.
|