Appearance
Inventaire des containers Docker (poste Windows)
Snapshot pris le 2026-05-04 sur la machine Kael (Windows 11 + Docker Desktop / WSL2).
Résumé
| Container | Image | Statut | Rôle | Obsolète ? |
|---|---|---|---|---|
tcg-collector-postgres-1 | pgvector/pgvector:pg16 | Up (healthy) | Base Postgres + extension vector du backend TCG | Non — cœur du stack |
tcg-collector-api-1 | tcg-collector-api (custom) | Up | API Fastify Node 22 (lecture de la base) sur :8080 | Non |
tcg-collector-nginx-1 | nginx:alpine | Up | Reverse proxy + sert /images et l'app probe sur :8081 | Non |
tcg-vision-api | tcg-vision-api:latest (custom) | Up (healthy) | Scanner de cartes : DINOv2 + FAISS (~30 370 cartes), endpoint /scan-compat sur :8000 | Non — utilisé par l'app RN |
tcg-collector-embeddings-1 | tcg-collector-embeddings (custom) | Up (healthy) | Ancien sidecar embeddings DINOv2 (interne :8000) | Probablement oui — voir ci-dessous |
tcg-collector-ingest-1 | tcg-collector-ingest (custom) | Exited (1) il y a 5 jours | Worker one-shot d'ingestion TCGdex → Postgres + images | Non, mais en erreur (à réparer) |
Détail par container
tcg-collector-postgres-1 — Base de données
- Image :
pgvector/pgvector:pg16(Postgres 16 + extensionvectorrequise par la migration0004_card_embeddings.sql). - Volume : bind mount
tcg-collector-backend/data/pg→/var/lib/postgresql/data(~321 MB actuellement). - Port :
5432exposé. - À garder : oui. C'est le seul état applicatif non régénérable sans relancer une ingestion complète.
tcg-collector-api-1 — API HTTP
- Image : buildée depuis
tcg-collector-backend/docker/api.Dockerfile(Node 22 + Fastify). - Dépend de :
postgres(healthcheck), optionnellementembeddingsviaEMBEDDINGS_URL. - Port :
8080→3000. - Sources :
tcg-collector-backend/src/api/.
tcg-collector-nginx-1 — Reverse proxy & static
- Sert
/images/**(cacheimmutable) et reverse-proxy/api/**→ serviceapi. - Config :
tcg-collector-backend/docker/nginx.conf. - Port :
8081→80.
tcg-vision-api — Scanner de cartes (recommandé)
- Sidecar DINOv2 + index FAISS prébuilt (~30 370 cartes Pokémon / One Piece / Lorcana).
- Expose
/scan(upstream) et/scan-compat(JSON enrichi TCGdex pour le client RNpoc-tcg-collector). - Volume nommé :
tcg-collector_tcg-vision-torch-cache(cache torch, ~85 MB, regénérable). - Port :
8000.
tcg-collector-embeddings-1 — Ancien sidecar embeddings
- Sidecar embeddings basique (DINOv2 small) introduit avant
tcg-vision. - Le commentaire dans
compose.ymlle marque comme optionnel : "the api gracefully degrades to pHash + OCR if it's down". tcg-vision-apicouvre désormais le besoin scan de manière plus complète (pHash + ANN + enrichissement TCGdex).- Verdict : à confirmer en relisant
EMBEDDINGS_URLdans.env. S'il pointe encore surhttp://embeddings:8000et que le code de l'API l'appelle, garder. Sinon → supprimer du compose et libérer ~1.25 GB d'image.
tcg-collector-ingest-1 — Worker d'ingestion (en erreur)
- One-shot, pas un service long-running (
restart: "no"). - Dernier exit code
1. Cause :ERROR ingest failed: error: table tid from new index tuple (4,21) overlaps with invalid duplicate tuple at offset 55 of block 34 in index "cards_set_id_idx" - C'est une corruption d'index Postgres, pas un bug applicatif. À réparer avant de migrer :bashPuis relancer :
docker exec -it tcg-collector-postgres-1 psql -U tcg -d tcg -c "REINDEX INDEX cards_set_id_idx;" # ou plus large docker exec -it tcg-collector-postgres-1 psql -U tcg -d tcg -c "REINDEX TABLE cards;"bash→ Si la base est repartie de zéro sur le VPS (cas recommandé), cette corruption n'a pas besoin d'être migrée.docker compose -f docker/compose.yml run --rm ingest
Volumes & données sur disque
| Donnée | Taille | Régénérable ? |
|---|---|---|
data/pg (Postgres) | ~321 MB | Oui via ingest (~30 min selon réseau / rate-limit TCGdex) |
data/images (visuels cartes) | ~1.9 GB | Oui via ingest avec INGEST_IMAGES=true (long, dépend du débit) |
volume nommé tcg-vision-torch-cache | ~85 MB | Oui automatiquement au premier boot |
Stacks orphelins / réseaux à nettoyer
docker network ls montre encore :
routines_default— réseau du composeroutines/(ok si vous comptez l'exécuter).solidity-dojo_default— projet déconnecté du repo actuel ; à supprimer si plus utilisé :bashdocker network rm solidity-dojo_default