corentin_wakdo/.env.example
Imugiii 32924a5813 chore(docker): add env template, dockerignore and Makefile scaffold
.env.example : template neutre (kiosk.example.com / admin.example.com /
traefik_proxy, RFC 2606 pour le domaine), a editer par l'utilisateur.
Variables DB_*, SESSION_*, CORS_*, APP_URL_*, TRAEFIK_DOMAIN_*,
REVERSE_PROXY_NETWORK. Aucune information de prod (FQDN, noms de reseau)
n'est exposee dans ce template committe.

.dockerignore : exclusion du contexte de build des artefacts non
pertinents ou sensibles (git, docs, tests, .claude, _byan, secrets,
node_modules, logs, volumes locaux).

Makefile : orchestration en une seule commande conforme Cr RNCP 7.c.4.
- Charge .env automatiquement avec export vers l'environnement shell
- Cible check-env valide la presence des 8 variables critiques Wakdo
  et guide l'utilisateur vers un merge plutot qu'un ecrasement si un
  .env pre-existant (tooling externe) est detecte incomplet
- Cible init enchaine .env check -> check-env -> reseau proxy ->
  build -> up -> wait-db -> migrate -> status final
- Verification du reseau REVERSE_PROXY_NETWORK avec message d'aide
  precis si absent (sans auto-creation silencieuse : l'utilisateur
  decide soit d'adapter la variable soit de creer le reseau)
- Cibles secondaires : up / down / stop / restart / build / rebuild,
  logs(-app|-web|-db), shell-(app|db|cron), wait-db, migrate, seed,
  backup, test(-unit|-integration), lint, clean (interactif),
  clean-force (CI), install-hooks. Aide auto-generee via make help.

Les cibles marquees [a venir] seront completees lors des phases
correspondantes (P2 back squelette, P6 tests, P7 DevOps finalisation).
2026-04-24 09:50:59 +00:00

110 lines
4.4 KiB
Text

#
# Wakdo - template de configuration
#
# Usage :
# cp .env.example .env
# Editer .env (gitignore) avec les valeurs reelles.
#
# Audience :
# Destine a l'auteur, au jury et aux contributeurs futurs.
#
# Modele de deploiement :
# Ce projet tourne sur serveur derriere un reverse proxy Traefik. Il n'y a
# pas de binding de ports hote : l'acces se fait uniquement via les FQDN
# configures ci-dessous et routes par Traefik (reseau admin_proxy).
# Les distinctions dev / staging / prod se font par FQDN distincts
# (ex : .dev.acadenice.fr vs .acadenice.fr) et par .env dedie.
#
# ===================================================================
# Environnement applicatif
# ===================================================================
APP_ENV=dev # dev | staging | prod
APP_DEBUG=true # true en dev, false en prod
APP_TIMEZONE=Europe/Paris
# URL publique de la borne (Bloc 1), doit pointer vers le FQDN Traefik.
# Placeholder example.com (RFC 2606) - a remplacer par le FQDN reel.
APP_URL_KIOSK=https://kiosk.example.com
# URL publique du back-office + API (Bloc 2).
# Placeholder example.com (RFC 2606) - a remplacer par le FQDN reel.
APP_URL_ADMIN=https://admin.example.com
# ===================================================================
# Base de donnees (MariaDB)
# ===================================================================
# Valeurs ci-dessous = PLACEHOLDERS. Remplacer par des mots de passe forts.
# Pas accessible depuis l'exterieur : le service wakdo-db est sur le reseau
# interne uniquement, aucun port exposé a l'hote.
DB_HOST=wakdo-db # nom du service docker-compose
DB_PORT=3306
DB_NAME=wakdo
DB_USER=wakdo
DB_PASSWORD=change_me_strong_password
DB_ROOT_PASSWORD=change_me_root_password
# ===================================================================
# Sessions
# ===================================================================
SESSION_LIFETIME_IDLE=14400 # 4h en secondes - idle timeout
SESSION_LIFETIME_ABSOLUTE=36000 # 10h en secondes - absolute timeout
SESSION_NAME=WAKDO_SID # nom du cookie (evite PHPSESSID)
# ===================================================================
# Securite
# ===================================================================
# Origine autorisee pour les requetes CORS de l'API.
# Doit correspondre exactement a APP_URL_KIOSK (pas de wildcard).
CORS_ALLOWED_ORIGIN=https://kiosk.example.com
# Algorithme de hashage mot de passe (password_hash PHP).
# argon2id recommande depuis PHP 7.3 pour les nouveaux projets.
PASSWORD_ALGO=argon2id
# ===================================================================
# Upload images produits
# ===================================================================
UPLOAD_MAX_SIZE_MB=5
UPLOAD_ALLOWED_MIME=image/jpeg,image/png,image/webp
# ===================================================================
# Cron (fenetre de maintenance 01h30 - 09h30)
# ===================================================================
# Les jobs sont definis dans docker/cron/crontab. Ici uniquement le TZ.
CRON_TIMEZONE=Europe/Paris
# ===================================================================
# Exposition via Traefik
# ===================================================================
# FQDN consommes par les labels docker-compose.yml pour generer les routes
# Traefik et les certificats TLS (Traefik gere le resolver par defaut).
# Le Traefik de l'hote prend en charge Let's Encrypt automatiquement.
TRAEFIK_DOMAIN_KIOSK=kiosk.example.com
TRAEFIK_DOMAIN_ADMIN=admin.example.com
# ===================================================================
# Reseau Docker externe du reverse proxy
# ===================================================================
# Nom du reseau Docker externe auquel le service web doit se connecter
# pour etre expose par le reverse proxy de l'hote.
#
# Adapter selon votre infrastructure. Valeurs courantes :
# traefik_proxy - convention neutre (placeholder)
# traefik_public - convention doc Traefik
# traefik - setups simples
# proxy - autre convention frequente
#
# Le reseau doit exister AVANT 'make init' (cree par votre stack de
# reverse proxy, ou manuellement : docker network create <nom>).
# La cible 'make init' echoue proprement avec un message d'aide si le
# reseau est introuvable.
REVERSE_PROXY_NETWORK=traefik_proxy