Procedure de deploiement RaciFlow
Fichiers et repertoires cles
| Chemin | Description |
|---|---|
/opt/raci-flow/ |
Code source de l’application (repository Git) |
/root/home-it/apps/raci-flow/docker-compose.yml |
Compose de l’application (app + postgres + redis) |
/root/home-it/apps/raci-flow/Dockerfile |
Dockerfile multi-stage |
/root/home-it/apps/raci-flow/.env |
Variables d’environnement de production |
/root/home-it/vps/proxy/docker-compose.yml |
Compose du reverse proxy Caddy |
/root/home-it/vps/proxy/Caddyfile |
Configuration Caddy (domaines, reverse proxy) |
Deploiement standard
1. Mettre a jour le code source
cd /opt/raci-flow
git pull origin main
2. Reconstruire l’image Docker
cd /root/home-it/apps/raci-flow
docker compose build
Cette commande execute le Dockerfile multi-stage qui :
- Etape
deps: Installe les dependances pnpm (pnpm install --frozen-lockfile) - Etape
builder: Copie le code source et lance le build (pnpm run build)- Frontend : Vite compile React vers
dist/public/ - Backend : esbuild bundle le serveur vers
dist/index.js
- Frontend : Vite compile React vers
- Etape
runner: Image finale minimale avec uniquement les artefacts de build, les node_modules et les fichiers de migration Drizzle
3. Redemarrer les services
cd /root/home-it/apps/raci-flow
docker compose up -d
Les containers redemarrent dans l’ordre defini par les dependances :
postgres(healthcheck:pg_isready)redis(healthcheck:redis-cli ping)app(demarre apres que postgres soit healthy)
Commande combinee (deploiement rapide)
cd /opt/raci-flow && git pull origin main && \
cd /root/home-it/apps/raci-flow && \
docker compose build && docker compose up -d
Dockerfile multi-stage
Le Dockerfile utilise 3 etapes pour optimiser la taille de l’image finale :
deps (Node 22 Alpine)
└── Installation pnpm + dependances (frozen lockfile)
└── builder (Node 22 Alpine)
└── Build Vite (frontend) + esbuild (backend)
└── runner (Node 22 Alpine)
└── Image finale : node_modules + dist/ + drizzle/
Variables de build injectees via ARG :
VITE_APP_ID: Identifiant de l’application (defaut:raci-flow)VITE_SENTRY_DSN: DSN Sentry pour le frontend (baked dans le bundle Vite)
Point d’entree de l’image finale :
CMD ["node", "--import", "./dist/instrument.js", "dist/index.js"]
Le fichier instrument.js initialise Sentry avant le demarrage du serveur Express.
Migrations de base de donnees
Les migrations Drizzle sont incluses dans l’image Docker (drizzle/ + drizzle.config.ts).
Pour appliquer les migrations manuellement :
docker exec -it raci-flow-app sh
npx drizzle-kit generate && npx drizzle-kit migrate
Ou depuis l’exterieur :
docker exec raci-flow-app npx drizzle-kit generate
docker exec raci-flow-app npx drizzle-kit migrate
Gestion du reverse proxy Caddy
Caddy est gere separement dans son propre compose :
cd /root/home-it/vps/proxy
docker compose up -d
En cas de modification du Caddyfile :
cd /root/home-it/vps/proxy
docker compose restart caddy
Caddy gere automatiquement les certificats TLS pour app.raciflow.com.
Verification post-deploiement
# Verifier que tous les containers sont sains
docker ps --format "table \t"
# Verifier les logs de l'application
docker logs raci-flow-app --tail 50
# Tester l'acces HTTP
curl -s -o /dev/null -w "%{http_code}" https://app.raciflow.com