# Helper - Commandes du projet Lucien-sens-bon Ce document explique les commandes utilisées dans ce projet, classées par thème. Pour chaque commande : objectif, paramètres importants, et alternatives utiles. ## 1. Docker / Docker Compose (services Medusa + Storefront + Redis) ### 1.1 Lancer les services **Commande** ``` docker compose up -d --build ``` **Explication** - `docker compose` : plugin Compose intégré (recommandé). - `up` : crée et démarre les services. - `-d` : détaché (retourne la main). - `--build` : reconstruit les images si nécessaire. **Alternatives** - `docker-compose up -d --build` (ancienne syntaxe). - `docker compose up` (sans `-d` : logs en direct). ### 1.2 Voir l'état des conteneurs **Commande** ``` docker compose ps ``` **Paramètres** - aucun : liste services, statuts, ports. **Alternatives** - `docker ps` : tous les conteneurs (tous projets). - `docker compose ps -a` : inclut les conteneurs arrêtés. ### 1.3 Voir les logs **Commande** ``` docker compose logs -f docker compose logs -f backend docker compose logs -f storefront ``` **Paramètres** - `-f` : suivi temps réel (équivalent `tail -f`). - `backend` / `storefront` : filtre par service. **Alternatives** - `docker logs -f ` - `docker compose logs --tail=200 backend` ### 1.4 Redémarrer un service **Commande** ``` docker compose restart backend ``` **Explication** - redémarre le service sans reconstruire l’image. **Alternatives** - `docker compose up -d backend` - `docker compose up -d --build backend` ### 1.5 Rebuild forcé d’un service **Commande** ``` docker compose build --no-cache backend docker compose up -d --build backend ``` **Paramètres** - `--no-cache` : force l’installation des deps + postinstall. - `--build` : rebuild puis redeploiement. **Alternatives** - `docker compose build backend` (cache autorisé). ### 1.6 Entrer dans un conteneur **Commande** ``` docker exec -it medusa-backend sh ``` **Paramètres** - `exec` : exécute une commande dans un conteneur. - `-it` : mode interactif + TTY. - `sh` : shell minimal. **Alternatives** - `docker exec -it medusa-backend bash` (si `bash` présent). - `docker compose exec backend sh` ### 1.7 Commande dans un conteneur temporaire **Commande** ``` docker compose run --rm backend ``` **Paramètres** - `run` : conteneur ponctuel basé sur le service. - `--rm` : supprime le conteneur à la fin. **Alternatives** - `docker run --rm -it ` ## 2. PostgreSQL (connexion, diagnostic, sauvegarde) ### 2.1 Connexion via `DATABASE_URL` **Commande** ``` psql "$DATABASE_URL" -c "select 1;" ``` **Paramètres** - `$DATABASE_URL` : `postgres://user:pass@host:5432/db` - `-c` : exécute une requête et quitte. **Alternatives** - `psql -h -U -d -W` - `docker run --rm -it postgres:16-alpine psql "$DATABASE_URL" -c "select 1;"` ### 2.2 Test du port réseau PostgreSQL **Commande** ``` nc -vz 5432 ``` **Paramètres** - `-v` : verbose. - `-z` : scan sans envoyer de données. **Alternatives** - `telnet 5432` - `bash -c ">/dev/tcp//5432"` (si bash) ### 2.3 Diagnostic hôte (service / process) **Commandes** ``` sudo systemctl status postgresql sudo service postgresql status ps aux | grep -E "postgres|postmaster" ``` **Paramètres** - `systemctl` / `service` : vérifie service systemd/sysv. - `ps + grep` : liste les processus. **Alternatives** - `pgrep -a postgres` - `ss -lntp | grep 5432` ### 2.4 Localiser la configuration **Commandes** ``` sudo -u postgres psql -c "SHOW config_file;" sudo -u postgres psql -c "SHOW hba_file;" sudo -u postgres psql -c "SHOW data_directory;" ``` **Explication** - donne les chemins exacts des fichiers de config et des données. **Alternatives (chemins typiques)** - `/etc/postgresql/*/main/postgresql.conf` - `/etc/postgresql/*/main/pg_hba.conf` - `/var/lib/pgsql/data/postgresql.conf` - `/var/lib/pgsql/data/pg_hba.conf` ### 2.5 Commandes `psql` utiles (dans psql) **Commandes** ``` \du \l \c ma_base \dt SHOW port; SHOW listen_addresses; ``` **Paramètres** - `\` : commandes internes psql. - `SHOW ...` : variables de configuration. **Alternatives** - `SELECT current_user;` - `SELECT version();` ### 2.6 Sauvegarde et restauration **Commandes** ``` pg_dump -Fc -U user nom_db > /backups/lucien-sens-bon.dump pg_restore -U user -d nom_db /backups/lucien-sens-bon.dump ``` **Paramètres** - `-Fc` : format custom (compressé + restauration sélective). - `-U` : utilisateur. **Alternatives** - `pg_dump -U user nom_db > dump.sql` - `psql -U user -d nom_db < dump.sql` ## 3. Medusa / Node.js (backend) ### 3.1 Migrations Medusa **Commande** ``` docker compose run --rm backend npx medusa migrations run ``` **Explication** - applique les migrations (création des tables). **Paramètres** - `npx` : exécute la version locale de Medusa. **Alternatives** - `docker exec -it medusa-backend npx medusa migrations run` ### 3.2 Seed de données **Commande** ``` docker compose run --rm backend npm run seed ``` **Explication** - injecte des données de démo si `backend/data/seed.json` existe. **Alternatives** - `docker exec -it medusa-backend npm run seed` ### 3.3 Import CSV produits (Medusa) **Commande** ``` docker compose run --rm backend npm run import:products ``` **Explication** - importe des produits depuis `backend/data/products-import.csv` (upsert via `external_id`). **Alternatives** - `docker exec -it medusa-backend npm run import:products` - `node backend/scripts/import-products.js --file backend/data/products-import.csv --dry-run` **Doc** - voir `DOC_IMPORT_PRODUITS.md` ### 3.4 Création utilisateur admin (Medusa) **Commande** ``` docker exec -it medusa-backend medusa user -e admin@lucien.com -p supersecret ``` **Paramètres** - `-e` : email de l’admin. - `-p` : mot de passe. **Alternatives** - `medusa user --help` ### 3.5 Test DB via Node (diagnostic) **Commande** ``` docker compose run --rm backend node -e "const { Client }=require('pg'); ... " ``` **Explication** - `node -e` : exécute un script JS en ligne. - `pg` : client PostgreSQL Node. **Alternatives** - script JS temporaire dans le conteneur. - `psql` direct (plus simple si accès). ## 4. Storefront / Tests HTTP (curl) ### 4.1 Test de l’API Medusa **Commande** ``` curl http://localhost:9000/store/products ``` **Paramètres** - URL endpoint public Medusa. **Alternatives** - `curl -v ...` - `http :9000/store/products` (httpie) ### 4.2 Test du storefront **Commande** ``` curl http://localhost:8000 ``` **Explication** - vérifie que le site répond. **Alternatives** - `curl -I http://localhost:8000` ### 4.3 Test CORS **Commande** ``` curl -i -H "Origin: http://:8000" http://:9000/store/products ``` **Paramètres** - `-i` : inclut les en-têtes. - `-H` : ajoute un header `Origin`. **Alternatives** - `curl -v ...` - DevTools navigateur (onglet Network). ## 5. Apache / Reverse proxy ### 5.1 Statut Apache **Commande** ``` sudo systemctl status apache2 ``` **Alternatives** - `sudo service apache2 status` ### 5.2 Logs Apache **Commandes** ``` sudo journalctl -u apache2 -f sudo tail -f /var/log/apache2/error.log sudo tail -f /var/log/apache2/access.log ``` **Paramètres** - `-f` : suivi temps réel. **Alternatives** - `journalctl -u apache2 -n 200 --no-pager` ### 5.3 Modules proxy **Commandes** ``` sudo a2enmod proxy sudo a2enmod proxy_http ``` **Explication** - active les modules de reverse proxy. **Alternatives** - `a2enmod headers` - `a2enmod rewrite` ### 5.4 Reload Apache **Commande** ``` sudo systemctl reload apache2 ``` **Explication** - recharge la config sans couper les connexions actives. **Alternatives** - `sudo service apache2 restart` ### 5.5 Activer un vhost **Commandes** ``` sudo a2ensite lucien.conf sudo apache2ctl configtest sudo service apache2 restart ``` **Paramètres** - `configtest` : vérifie la syntaxe avant redémarrage. ## 6. DNS / Résolution (Windows + Linux) ### 6.1 DNS local (Windows) **Commandes** ``` nslookup www.lsb.huitral.ruka.lan ipconfig /flushdns ``` **Alternatives** - `Resolve-DnsName` (PowerShell) ### 6.2 DNS Linux **Commandes** ``` dig +short www.lsb.huitral.ruka.lan ls -l /etc/resolv.conf sudo tee /etc/wsl.conf <<'EOF' [network] generateResolvConf = false EOF ``` **Alternatives** - `nslookup` - `host ` ## 7. Systemd / Logs système (journalctl) ### 7.1 Base **Commandes** ``` sudo journalctl --disk-usage sudo journalctl --list-boots sudo journalctl -u -n 50 --no-pager sudo journalctl -u -f ``` **Paramètres** - `-u` : filtre par service. - `-n` : n dernières lignes. - `-f` : suivi temps réel. - `-b` : dernier boot. - `-S` : depuis une date (ex: `10 min ago`). - `--no-pager` : pas de pagination. ## 8. Réseau / Ports (diagnostic) ### 8.1 Ports locaux **Commandes** ``` ss -lntp | egrep '8000|9000|5432|6379' netstat -lntp | egrep '8000|9000|5432|6379' ``` **Paramètres** - `ss` : outil moderne (remplace netstat). - `-l` listening, `-n` numérique, `-t` TCP, `-p` process. **Alternatives** - `lsof -iTCP -sTCP:LISTEN -n -P` ### 8.2 Firewall **Commande** ``` sudo ufw status ``` **Alternatives** - `sudo iptables -S` - `sudo firewall-cmd --list-all` ## 9. Fichiers / Permissions ### 9.1 Vérifier présence d’un fichier **Commandes** ``` ls -l docker-compose.yml ls -l /etc/resolv.conf ``` **Explication** - `-l` : détails (droits, owner). **Alternatives** - `stat ` ### 9.2 Corriger les permissions du dépôt **Commande** ``` sudo chown -R "$USER":"$USER" /var/www/lucien-sens-bon ``` **Explication** - redonne les droits à l’utilisateur courant. **Alternatives** - `sudo chgrp -R ` - `sudo chmod -R g+w ` ## 10. Git (workflow et maintenance) ### 10.1 État et staging **Commandes** ``` git status git add -A git reset HEAD .env output*.txt ``` **Paramètres** - `add -A` : indexe ajouts + modifs + suppressions. - `reset HEAD ...` : retire du staging sans toucher au disque. **Alternatives** - `git add ` - `git restore --staged ` ### 10.2 Commit avec identité temporaire **Commande** ``` GIT_AUTHOR_NAME="toshiro" GIT_AUTHOR_EMAIL="toshiro@chillka" \ GIT_COMMITTER_NAME="toshiro" GIT_COMMITTER_EMAIL="toshiro@chillka" \ git commit -m "local changes on huitral" ``` **Explication** - fixe l’identité uniquement pour cette commande. **Alternatives** - `git -c user.name="..." -c user.email="..." commit -m "..."` ### 10.3 Suivi de branche distante **Commande** ``` git branch --set-upstream-to=origin/docs-git-dns ``` **Explication** - associe la branche locale à la branche distante. **Alternatives** - `git push -u origin ` ### 10.4 Mise à jour sans merge commit **Commandes** ``` git pull --rebase git fetch origin git pull --rebase origin docs-git-dns ``` **Explication** - `rebase` : rejoue les commits locaux au-dessus de la remote. **Alternatives** - `git pull --ff-only` ### 10.5 Aligner strictement sur la remote (ATTENTION) **Commandes** ``` git fetch origin git reset --hard origin/main git clean -fd ``` **Explication** - écrase les changements locaux + supprime les fichiers non suivis. **Alternatives** - `git stash push -u -m "wip"` ### 10.6 Stash pour rebase **Commandes** ``` git stash push -u -m "wip avant rebase" git stash pop ``` **Explication** - sauvegarde temporaire des modifs non committés. **Alternatives** - `git add -A` + `git commit` (si vous préférez un commit). ### 10.7 Références Git **Commandes** ``` git branch -a git show-ref --heads git show-ref --tags ``` **Explication** - affiche les branches locales, distantes et tags. ## 11. Sauvegardes fichiers et dépôt ### 11.1 Sauvegarder les uploads **Commande** ``` tar -czf /backups/medusa-uploads.tgz /var/www/lucien-sens-bon/backend/uploads ``` **Paramètres** - `-c` : create, `-z` : gzip, `-f` : fichier output. **Alternatives** - `rsync -a` (sauvegarde incrémentale). ### 11.2 Sauvegarder la config projet **Commande** ``` tar -czf /backups/lucien-sens-bon-config.tgz \ /var/www/lucien-sens-bon/.env \ /var/www/lucien-sens-bon/docker-compose.yml ``` **Explication** - archive les fichiers critiques de config. ### 11.3 Sauvegarder le dépôt Git (bare) **Commande** ``` git clone --mirror toshiro@chillka:/var/data/git/repositories/lucien-sens-bon.git \ /backups/lucien-sens-bon.git ``` **Paramètres** - `--mirror` : sauvegarde complète des refs/branches/tags. **Alternatives** - `git bundle create backup.bundle --all` ## 12. Édition / fichiers d’environnement ### 12.1 Copier le modèle `.env` **Commande** ``` cp env-example .env ``` **Explication** - crée un fichier `.env` local avec les variables par défaut. **Alternatives** - `cp -n env-example .env` (n’écrase pas si `.env` existe). ### 12.2 Éditer un fichier **Commande** ``` vim .env ``` **Alternatives** - `nano .env` - `code .env` ## 13. Outils divers utiles ### 13.1 Tests HTTP rapides (headers only) **Commande** ``` curl -I http://localhost:9000/store/products ``` **Explication** - `-I` : en-têtes uniquement (plus rapide). **Alternatives** - `wget --spider ` ### 13.2 Recherche dans un conteneur **Commande** ``` docker compose run --rm backend sh -c "rg -n \"update\\(\\{\\},\" node_modules/@medusajs/medusa/dist/services" ``` **Explication** - `rg -n` : recherche rapide avec numéros de lignes. **Alternatives** - `grep -n `