Grace
Déploiement

Docker Swarm (prod)

Déployer la plateforme en production sur Docker Swarm derrière Traefik.

En production, la plateforme se déploie en Docker Swarm à partir d'images pré-construites (ghcr.io/hoppr-tech), derrière Traefik (et non Caddy). Le manifeste est platform/docker-stack.yml.

Déployer

docker stack deploy -c docker-stack.yml grace

Les variables ${...} sont substituées depuis l'environnement du shell (voir DEPLOY-SWARM.md).

Conventions de la stack

  • Images pré-construites depuis ghcr.io (aucun build dans la stack).
  • Ingress Traefik via deploy.labels sur le réseau externe traefik-network.
  • Secrets Docker externes : mots de passe Postgres, token de signature.
  • Configs Docker pour l'init Postgres + postgresql.conf.
  • Durcissement no-new-privileges, user applicatif least-privilege (grace_app), réseau internal isolé.
  • Placement épinglé sur les nœuds node.labels.workload == apps.

Services & routes Traefik

ServiceImageHôte / route
backendgrace-backendgrace.hoppr.tech + PathPrefix(/api) (stripprefix) → port 3000
mcpgrace-mcpgrace-mcp.hoppr.tech → port 3001
frontendgrace-frontendgrace.hoppr.tech → port 80
postgrespostgres:18-alpineinterne (réseau internal)

Le catalogue est embarqué dans l'image backend (GRACE_CATALOG=/catalog, aucun bind-mount) → compatible Portainer/Git. Le modèle d'embeddings est caché sur le volume models (TRANSFORMERS_CACHE=/models) quand GRACE_RELEVANCE est actif.

Garde d'accès

Les surfaces qui doivent être restreintes à une identité Google passent par le middleware Traefik partagé google-auth. Le site de documentation est public pour l'instant ; voir CI & images pour le réactiver.

On this page