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.
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
-
Créer le fichier de réglages.
make docker-envcopiedeploy/compose/.env.exampleversdeploy/compose/.envavec des secrets locaux aléatoires et des ports hôte libres, et écritservices/control-plane/local.envpour un Control Plane lancé sur l'hôte. Un fichier existant est conservé.make docker-envSans
make:cp deploy/compose/.env.example deploy/compose/.env, puis remplacez chaque valeurCHANGE_ME_(openssl rand -hex 32).Résultat attendu :
deploy/compose/.envexiste et ne contient aucunCHANGE_ME_. -
Vérifier Docker et le fichier compose.
make docker-checkdocker compose -f deploy/compose/docker-compose.yml --env-file deploy/compose/.env config -qRé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. -
Construire et télécharger les images, créer les conteneurs.
make docker-installRésultat attendu : les images
control-planeetportalsont construites (workeraussi avec le profilgpu), les autres téléchargées. -
Démarrer la pile. Les services ponctuels passent d'abord :
migrate(python -m eai.migrate),openfga-migrate,opensearch-initetseaweedfs-init(bucketseai-audit-wormavec verrouillage d'objet en mode COMPLIANCE,eai-artifactsetopik). Keycloak importe le realmenterprise-aidepuisdeploy/keycloak/realm-enterprise-ai.json; OPA charge le bundledeploy/policies/opa.make docker-startmake docker-statusProfils facultatifs :
make docker-start PROFILES="gpu ollama"ajoute vLLM, le worker média et Ollama ;PROFILES=opikajoute Opik (il exige un serveur MySQL 8.4 installé à part,OPIK_STATE_DB_URLetOPIK_STATE_DB_PASSWORDdans.env).Résultat attendu :
make docker-statusmontre les services permanentsrunning(healthyquand ils ont un healthcheck) et les services ponctuelsexited (0).En cas d'échec :
make <service>-logs(par exemplemake control-plane-logs). PostgreSQL garde le mot de passe de son premier démarrage dans son volume : après un nouveau.env, lancezmake docker-clean(supprime les volumes) puis redémarrez. -
Charger le modèle OpenFGA.
fga store create --name enterprise-ai --api-url http://localhost:8082fga model write --store-id <id-du-store> --file deploy/policies/openfga/model.fgapython3 tools/policies/fga_build.py --check<id-du-store>: identifiant affiché parfga 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.
| Service | URL |
|---|---|
| API Control Plane | http://localhost:8080/v1 |
| Portail | http://localhost:3300 |
| LiteLLM | http://localhost:4000 |
Keycloak (realm enterprise-ai) | http://localhost:8081 |
| OpenFGA | http://localhost:8082 |
| OpenBao (dev) | http://localhost:8200 |
| Interface Temporal | http://localhost:8088 |
Opik (profil opik) | http://localhost:3001 |
| Jaeger | http://localhost:16686 |
| Prometheus | http://localhost:9090 |
| API S3 de SeaweedFS | http://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
| Commande | Effet |
|---|---|
make docker-stop | Arrête les conteneurs |
make docker-down | Supprime les conteneurs, garde les volumes |
make docker-clean | Supprime les conteneurs et les volumes : bases, files et stockage objet repartent vides |
Étapes suivantes
- Développement local pour lancer l'API et le portail sur l'hôte à côté de ces services
- Première configuration
Dépannage
| Symptôme | Cause | Correction |
|---|---|---|
password authentication failed dans les journaux de migrate | .env modifié après le premier démarrage | make docker-clean, puis make docker-start |
| Un port est déjà alloué | Un autre programme l'utilise | make docker-env choisit le port libre suivant pour les ports d'infrastructure ; pour les autres, arrêtez le programme |
| vLLM ne démarre pas | Pas de GPU ou pas de NVIDIA container toolkit | Démarrez sans le profil gpu, ou utilisez PROFILES=ollama |
| Opik ne démarre pas | Pas de base d'état MySQL | Fixez OPIK_STATE_DB_URL et OPIK_STATE_DB_PASSWORD |