Aller au contenu principal

Lancer la Navin Platform avec Docker Compose

Cette page démarre toute la pile de deploy/compose/docker-compose.yml sur un poste : API Control Plane, worker, portail, PostgreSQL, Redis, LiteLLM, Keycloak, OpenFGA, OPA, OpenBao, Qdrant, NATS, Temporal, LiveKit, ClickHouse, OpenSearch, Jaeger, l'OpenTelemetry Collector, Prometheus, Alertmanager et SeaweedFS. Elle s'adresse aux développeurs et aux démonstrations. Comptez trente minutes, surtout pour télécharger les images.

attention

Cette pile n'est pas faite pour la production : OpenBao tourne en mode développement et Keycloak en start-dev.

Avant de commencer​

  • Docker Engine avec le greffon compose v2 : docker compose version.
  • Ressources : voir Dimensionnement.
  • Facultatif : un GPU NVIDIA et le NVIDIA container toolkit pour le profil gpu (vLLM, worker média).
  • Les ports de Ports réseau libres sur l'hôte.

Étapes​

  1. Créer le fichier de réglages. make docker-env copie deploy/compose/.env.example vers deploy/compose/.env avec des secrets locaux aléatoires et des ports hôte libres, et écrit services/control-plane/local.env pour un Control Plane lancé sur l'hôte. Un fichier existant est conservé.

    make docker-env

    Sans make : cp deploy/compose/.env.example deploy/compose/.env, puis remplacez chaque valeur CHANGE_ME_ (openssl rand -hex 32).

    Résultat attendu : deploy/compose/.env existe et ne contient aucun CHANGE_ME_.

  2. Vérifier Docker et le fichier compose.

    make docker-check
    docker compose -f deploy/compose/docker-compose.yml --env-file deploy/compose/.env config -q

    Résultat attendu : aucune sortie de config -q.

    En cas d'échec : le message nomme la variable manquante de .env, ou le démon Docker qui ne répond pas.

  3. Construire et télécharger les images, créer les conteneurs.

    make docker-install

    Résultat attendu : les images control-plane et portal sont construites (worker aussi avec le profil gpu), les autres téléchargées.

  4. Démarrer la pile. Les services ponctuels passent d'abord : migrate (python -m eai.migrate), openfga-migrate, opensearch-init et seaweedfs-init (buckets eai-audit-worm avec verrouillage d'objet en mode COMPLIANCE, eai-artifacts et opik). Keycloak importe le realm enterprise-ai depuis deploy/keycloak/realm-enterprise-ai.json ; OPA charge le bundle deploy/policies/opa.

    make docker-start
    make docker-status

    Profils facultatifs : make docker-start PROFILES="gpu ollama" ajoute vLLM, le worker média et Ollama ; PROFILES=opik ajoute Opik (il exige un serveur MySQL 8.4 installé à part, OPIK_STATE_DB_URL et OPIK_STATE_DB_PASSWORD dans .env).

    Résultat attendu : make docker-status montre les services permanents running (healthy quand ils ont un healthcheck) et les services ponctuels exited (0).

    En cas d'échec : make <service>-logs (par exemple make control-plane-logs). PostgreSQL garde le mot de passe de son premier démarrage dans son volume : après un nouveau .env, lancez make docker-clean (supprime les volumes) puis redémarrez.

  5. Charger le modèle OpenFGA.

    fga store create --name enterprise-ai --api-url http://localhost:8082
    fga model write --store-id <id-du-store> --file deploy/policies/openfga/model.fga
    python3 tools/policies/fga_build.py --check

    <id-du-store> : identifiant affiché par fga store create.

    Résultat attendu : les tests du modèle passent.

Vérifier​

curl -fsS http://localhost:8080/readyz

Sortie attendue : "status": "ready". Ouvrez ensuite http://localhost:3300, onglet Identifiant, avec EAI_BOOTSTRAP_ADMIN_USERNAME et EAI_BOOTSTRAP_ADMIN_PASSWORD de .env (navin / navin par défaut) : le portail demande un nouveau mot de passe à la première connexion.

ServiceURL
API Control Planehttp://localhost:8080/v1
Portailhttp://localhost:3300
LiteLLMhttp://localhost:4000
Keycloak (realm enterprise-ai)http://localhost:8081
OpenFGAhttp://localhost:8082
OpenBao (dev)http://localhost:8200
Interface Temporalhttp://localhost:8088
Opik (profil opik)http://localhost:3001
Jaegerhttp://localhost:16686
Prometheushttp://localhost:9090
API S3 de SeaweedFShttp://localhost:8333

Avec EAI_AUTH_DEV=1, l'API accepte les en-têtes X-Dev-Tenant, X-Dev-User et X-Dev-Roles ; mettez-le à 0 pour exiger des jetons Keycloak.

Arrêter et nettoyer​

CommandeEffet
make docker-stopArrête les conteneurs
make docker-downSupprime les conteneurs, garde les volumes
make docker-cleanSupprime les conteneurs et les volumes : bases, files et stockage objet repartent vides

Étapes suivantes​

Dépannage​

SymptômeCauseCorrection
password authentication failed dans les journaux de migrate.env modifié après le premier démarragemake docker-clean, puis make docker-start
Un port est déjà allouéUn autre programme l'utilisemake docker-env choisit le port libre suivant pour les ports d'infrastructure ; pour les autres, arrêtez le programme
vLLM ne démarre pasPas de GPU ou pas de NVIDIA container toolkitDémarrez sans le profil gpu, ou utilisez PROFILES=ollama
Opik ne démarre pasPas de base d'état MySQLFixez OPIK_STATE_DB_URL et OPIK_STATE_DB_PASSWORD