Update deployment pipeline, Makefile and README

- Makefile: add install_dev, install_prod, migrations, clear_prod, maintenance commands
- Playbook: full deploy flow (maintenance, stop, install, start, migrate, clear, caddy, messenger)
- Supervisor config for 2 messenger instances
- Workflow: SSH key setup with server IP
- hosts.ini: use IP instead of domain, sudo without password
- README: full documentation

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Serreau Jovann
2026-03-18 20:52:01 +01:00
parent f822a9a069
commit 507500e20d
6 changed files with 188 additions and 17 deletions

119
README.md
View File

@@ -1,31 +1,122 @@
# E-Ticket
Plateforme destinée aux associations pour la vente de tickets événementiels, la réservation de tables, l'organisation de brocantes et le vote en ligne.
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
- Symfony 8
- PHP 8.4
- PostgreSQL
| 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
- Messenger
- Amazon SES
- Cloudflare
- Caddy installe sur la machine hote
## Prérequis
## Prerequis
- PHP 8.4+
- Composer
- Symfony CLI
- Docker & Docker Compose
- Make
## Installation
```bash
composer install
# Build les images
make build_dev
# Lance les containers
make start_dev
# Install les dependances
make install_dev
```
## Lancement
## Commandes disponibles
```bash
symfony server:start
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.
```bash
# Deployer la config Caddy
ansible-playbook -i ansible/hosts.ini ansible/deploy-caddy.yml --ask-vault-pass
```
### Mode maintenance
Pour activer la maintenance :
```bash
touch /var/www/e-ticket/public/.update
```
Pour desactiver :
```bash
rm /var/www/e-ticket/public/.update
```
## Licence
Licence proprietaire. Voir [LICENSE.md](LICENSE.md).