From cbbaf2e94041e62bcdb033bc5d8df0f0068f9e8d Mon Sep 17 00:00:00 2001 From: ertopogo Date: Sun, 25 Jan 2026 02:14:27 +0100 Subject: ajout d'un fichier seed --- app-management.md | 144 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 144 insertions(+) (limited to 'app-management.md') diff --git a/app-management.md b/app-management.md index 20c5f5c..233ec1f 100644 --- a/app-management.md +++ b/app-management.md @@ -167,6 +167,150 @@ sudo docker compose run --rm backend node -e "const {Client}=require('pg'); cons - Controle le contenu de `payment_provider` si le backend plante au demarrage dans le service des providers de paiement. +## 3.2) Procedure complete + explications (incident backend 9000) + +Objectif : demarrer le backend sans crash, appliquer les correctifs, puis +verifier que l'API repond. + +### A) Confirmer les symptomes + +``` +sudo docker compose ps +sudo docker compose logs --tail=200 backend +curl -v http://localhost:9000/store/products +``` + +- `ps` : confirme si le conteneur redemarre en boucle. +- `logs` : montre l'erreur exacte (ex: TypeORM "Empty criteria"). +- `curl -v` : valide la reponse HTTP (200 attendu). + +### B) Comprendre la cause racine (pourquoi ca casse) + +Cause principale : +- Dans certaines versions de Medusa, plusieurs services font + `update({}, { is_installed: false })` sans criteres. +- Avec la version de TypeORM utilisee, `update` refuse les criteres vides + -> crash au demarrage. +- Le code fautif est dans les fichiers compiles de `node_modules` + (pas dans les sources du projet). + +Effet domino : +- Chaque correctif debloque l'etape suivante du demarrage, + revelant une autre erreur du meme type. + +### C) Correctif technique (patch postinstall) + +Le projet applique un patch automatique dans l'image Docker via : +- `backend/scripts/patch-medusa.js` (script) +- `backend/package.json` -> `postinstall` +- `backend/Dockerfile` -> `COPY scripts ./scripts` avant `npm install` + +Le patch remplace les `update({}, ...)` par un update explicite : +`createQueryBuilder().update().set(...).where('1=1').execute()`. + +### D) Forcer l'application du patch + +``` +cd /var/www/lucien-sens-bon +sudo docker compose build --no-cache backend +sudo docker compose up -d backend +``` + +- `--no-cache` : force `npm install` + `postinstall`, donc le patch. +- `up -d` : redeploie le conteneur avec la nouvelle image. + +### E) Verifier que le patch est bien applique + +``` +sudo docker compose run --rm backend sh -c "grep -n \"update({}, { is_installed: false })\" node_modules/@medusajs/medusa/dist/services/tax-provider.js || echo 'OK: patch present'" +``` + +- Si le grep ne trouve rien, la patch est presente. + +### F) Validation finale + +``` +sudo docker compose logs --tail=200 backend +curl -v http://localhost:9000/store/products +``` + +- Le log doit contenir `Server is ready on port: 9000`. +- L'API doit repondre `200` avec JSON. + +### G) Cas "Compiling Webpack" trop long + +Le plugin `@medusajs/admin` peut prendre du temps a compiler. +Si blocage > 10 min, on peut le desactiver temporairement dans +`backend/medusa-config.js` pour demarrer l'API, puis le reactiver. + +## 3.3) Verifier que l'image est saine apres reboot + +Objectif : s'assurer que le redemarrage ne casse pas l'API. + +### A) Redemarrer proprement + +``` +sudo docker compose restart backend +``` + +### B) Verifier etats + port + +``` +sudo docker compose ps +curl -v http://localhost:9000/store/products +``` + +- Le conteneur doit etre `Up` (pas `Restarting`). +- L'API doit repondre en `200`. + +### C) Verifier la patch dans l'image (controle rapide) + +``` +sudo docker compose run --rm backend sh -c "rg -n \"update\\(\\{\\}, \\{ is_installed: false \\}\\)\" node_modules/@medusajs/medusa/dist/services || echo 'OK: aucun update vide'" +``` + +- Si aucun match, les patchs sont bien en place. + +### D) Conseils pour eviter les surprises + +- Toujours rebuild `--no-cache` apres modification du patch. +- Ne pas editer `node_modules` a la main dans un conteneur running. +- Garder `backend/scripts/patch-medusa.js` versionne. + +## 3.4) Seed des produits + connexion storefront + +### A) Seed (donnees demo) + +``` +sudo docker compose run --rm backend npm run seed +``` + +- Necessite `backend/data/seed.json`. +- Sinon la commande echoue sans casser le backend. + +### B) Verifier l'API apres seed + +``` +curl -v http://localhost:9000/store/products +``` + +### C) Connecter la boutique (storefront) + +Verifier `NEXT_PUBLIC_MEDUSA_BACKEND_URL` dans `.env` : +``` +NEXT_PUBLIC_MEDUSA_BACKEND_URL=http://api.lsb.huitral.ruka.lan +``` + +Puis reconstruire le storefront : +``` +sudo docker compose up -d --build storefront +``` + +Si on travaille en local (pas via Apache), utiliser l'URL directe : +``` +NEXT_PUBLIC_MEDUSA_BACKEND_URL=http://:9000 +``` + ## 4) Apache / Reverse proxy Verifier les services Apache : -- cgit v1.2.3