Serreau Jovann eb884faea1
Some checks failed
CI / sonarqube (push) Failing after 52s
Align prod PHP container UID with bot user (1001) and harden restore.sh
Sur le serveur prod, l'utilisateur 'bot' (cree par Ansible) a UID 1001
alors que l'utilisateur 'appuser' du conteneur PHP etait hardcode a UID 1000,
ce qui causait des erreurs 'Unable to write in var/cache/prod' apres restore
ou deploiement: les fichiers du host appartenaient a bot:bot (1001) et
appuser (1000) ne pouvait pas y ecrire.

docker/php/prod/Dockerfile:
  - appuser UID/GID passe de 1000 a 1001 pour matcher bot
  - dev/Dockerfile reste a 1000 (les users dev sont generalement 1000)

ansible/deploy.yml:
  - chown des dossiers public/uploads/* et var/payouts passe de 1000 a 1001

restore.sh:
  - Nouvelle option --owner USER:GRP (defaut: bot:bot, override via RESTORE_OWNER)
  - Chown automatique en fin de restore sur var/, public/uploads/, config/cert/, .env.local
  - Purge automatique de var/cache (sera reconstruit par PHP)
  - Verification root au demarrage (sudo requis pour chown)
  - Verification de l'existence du user et group cibles
  - Option --skip-chown pour bypass (deconseille)
  - Etapes post-migration mises a jour (ajout de make build_prod en premier)

Procedure de migration sur le serveur apres ce commit:
  cd /var/www/e-ticket
  git pull origin master
  make build_prod              # rebuild image PHP avec UID 1001
  make stop_prod
  sudo chown -R bot:bot var public/uploads config/cert .env.local
  sudo rm -rf var/cache
  make start_prod
  make clear_prod

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 14:04:14 +02:00
2026-03-04 21:52:29 +01:00
2026-03-04 21:52:21 +01:00
2026-03-04 21:52:21 +01:00

E-Ticket

Plateforme destinee aux associations pour la vente de tickets evenementiels, la reservation de tables, l'organisation de brocantes et le vote en ligne.

Stack technique

Composant Technologie
Backend Symfony 8 / PHP 8.4
Base de donnees PostgreSQL 16
Cache / Queue Redis 7
Async Symfony Messenger
Frontend Bun / Vite / Tailwind CSS
Serveur web Caddy
Email Amazon SES
DNS / CDN Cloudflare
Deploiement Ansible / Gitea Actions

Architecture

Developpement

Service Port
Caddy (web) localhost:8000
Vite (HMR) localhost:5173
PostgreSQL localhost:5432
Redis localhost:6379
Mailpit (SMTP) localhost:1025
Mailpit (UI) localhost:8025
RedisInsight localhost:5540

Production

  • 2x PHP-FPM (load balancing via Caddy)
  • PostgreSQL master / slave (replication)
  • PgBouncer (connection pooling)
  • 2x Messenger workers
  • Redis
  • Caddy installe sur la machine hote

Prerequis

  • Docker & Docker Compose
  • Make

Installation

# Build les images
make build_dev

# Lance les containers
make start_dev

# Install les dependances
make install_dev

Commandes disponibles

make help
Commande Description
make build_dev Build les images Docker dev
make build_prod Build les images Docker prod
make start_dev Lance les containers dev
make start_prod Lance les containers prod (background)
make stop_dev Arrete les containers dev
make stop_prod Arrete les containers prod
make purge_dev Arrete et purge tout (volumes, images)
make install_dev Install les dependances via Docker
make install_prod Install les dependances et build les assets
make migration_dev Genere une migration
make migrate_dev Execute les migrations en dev
make migrate_prod Execute les migrations en prod

Base de donnees

Dev

Param Valeur
Host localhost
Port 5432
Database e-ticket
User app
Password secret

Prod

PostgreSQL master/slave avec PgBouncer. Replication streaming asynchrone.

Deploiement

Le deploiement se fait via Gitea Actions (declenchement manuel) + Ansible.

# Deployer la config Caddy
ansible-playbook -i ansible/hosts.ini ansible/deploy-caddy.yml --ask-vault-pass

Mode maintenance

Pour activer la maintenance :

touch /var/www/e-ticket/public/.update

Pour desactiver :

rm /var/www/e-ticket/public/.update

Licence

Licence proprietaire. Voir LICENSE.md.

Description
No description provided
Readme 12 MiB
Languages
PHP 59.3%
Twig 31.5%
JavaScript 6.3%
Shell 1%
SCSS 0.6%
Other 1.3%