summaryrefslogtreecommitdiff
path: root/app-management.md
diff options
context:
space:
mode:
authorertopogo <erwin.t.pombett@gmail.com>2026-01-25 02:14:27 +0100
committerertopogo <erwin.t.pombett@gmail.com>2026-01-25 02:14:27 +0100
commitcbbaf2e94041e62bcdb033bc5d8df0f0068f9e8d (patch)
tree8c5f05cedd6a1ec6ac05f21bf43fe99ad5a37a79 /app-management.md
parent807aef505023ba3aca5c86db0e4d7b6d22f7b0b0 (diff)
ajout d'un fichier seed
Diffstat (limited to 'app-management.md')
-rw-r--r--app-management.md144
1 files changed, 144 insertions, 0 deletions
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://<IP_DU_SERVEUR>:9000
+```
+
## 4) Apache / Reverse proxy
Verifier les services Apache :