diff options
| author | ertopogo <erwin.t.pombett@gmail.com> | 2026-01-25 02:14:27 +0100 |
|---|---|---|
| committer | ertopogo <erwin.t.pombett@gmail.com> | 2026-01-25 02:14:27 +0100 |
| commit | cbbaf2e94041e62bcdb033bc5d8df0f0068f9e8d (patch) | |
| tree | 8c5f05cedd6a1ec6ac05f21bf43fe99ad5a37a79 | |
| parent | 807aef505023ba3aca5c86db0e4d7b6d22f7b0b0 (diff) | |
ajout d'un fichier seed
| -rw-r--r-- | .gitignore | 2 | ||||
| -rw-r--r-- | app-management.md | 144 | ||||
| -rw-r--r-- | backend/data/seed.json | 62 | ||||
| -rw-r--r-- | backend/scripts/patch-medusa.js | 11 |
4 files changed, 208 insertions, 11 deletions
@@ -5,3 +5,5 @@ backend-error-m.txt backend-error-n.txt
backend-error-o.txt
backend-error-k_.txt
+backend-error-M2.txt
+backend-error-N2.txt
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 :
diff --git a/backend/data/seed.json b/backend/data/seed.json new file mode 100644 index 0000000..2c6b906 --- /dev/null +++ b/backend/data/seed.json @@ -0,0 +1,62 @@ +{ + "store": { + "currencies": ["eur"] + }, + "users": [ + { + "email": "admin@lsb.local", + "password": "supersecret" + } + ], + "regions": [ + { + "id": "fr", + "name": "France", + "currency_code": "eur", + "tax_rate": 0, + "payment_providers": ["manual"], + "fulfillment_providers": ["manual"], + "countries": ["fr"] + } + ], + "shipping_options": [ + { + "name": "Standard", + "region_id": "fr", + "provider_id": "manual", + "price_type": "flat_rate", + "amount": 500 + } + ], + "products": [ + { + "title": "Savon Lavande", + "handle": "savon-lavande", + "description": "Savon artisanal a la lavande.", + "thumbnail": "https://via.placeholder.com/600x600.png?text=Savon+Lavande", + "options": [ + { + "title": "Taille" + } + ], + "variants": [ + { + "title": "100g", + "prices": [ + { + "currency_code": "eur", + "amount": 650 + } + ], + "options": [ + { + "value": "100g" + } + ], + "inventory_quantity": 100, + "manage_inventory": true + } + ] + } + ] +} diff --git a/backend/scripts/patch-medusa.js b/backend/scripts/patch-medusa.js index 82d6333..a3b7b0f 100644 --- a/backend/scripts/patch-medusa.js +++ b/backend/scripts/patch-medusa.js @@ -42,17 +42,6 @@ const taxProviderPath = path.join( "tax-provider.js"
);
-const fulfillmentPath = path.join(
- __dirname,
- "..",
- "node_modules",
- "@medusajs",
- "medusa",
- "dist",
- "services",
- "fulfillment-provider.js"
-);
-
const targets = [
{
label: "payment-provider",
|
