- 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>
123 lines
2.7 KiB
Markdown
123 lines
2.7 KiB
Markdown
# 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
|
|
|
|
```bash
|
|
# Build les images
|
|
make build_dev
|
|
|
|
# Lance les containers
|
|
make start_dev
|
|
|
|
# Install les dependances
|
|
make install_dev
|
|
```
|
|
|
|
## Commandes disponibles
|
|
|
|
```bash
|
|
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).
|