Compare commits

...

2 Commits

Author SHA1 Message Date
bf871852b8 Mise à jour de l'orchestrateur
Some checks failed
E2E Tests / e2e (push) Failing after 2m31s
2026-06-14 17:18:48 +02:00
78e735c959 Mise à jour de la partie watchtower ; pas nécéssaire tout le temps
Some checks are pending
E2E Tests / e2e (push) Waiting to run
2026-06-14 16:51:46 +02:00
4 changed files with 19 additions and 6 deletions

View File

@@ -1,7 +1,10 @@
# Copie en .env sur le serveur (jamais commite).
# Registre et tag des images core / brain a spawner par session.
REGISTRY=git.igmlcreation.fr
# Registre, namespace et tag des images core / brain a spawner par session.
# Doit pointer sur le registre ou la CI publie reellement (ghcr.io).
# Le slash final de IMAGE_NAMESPACE est important : image = REGISTRY/NAMESPACEcore:TAG
REGISTRY=ghcr.io
IMAGE_NAMESPACE=igmlcreation/loremind-
TAG=latest
# Secret partage entre core et brain (genere aleatoirement au build de chaque

View File

@@ -10,6 +10,7 @@ import (
// Config centralise les parametres lus depuis les variables d'env au boot.
type Config struct {
Registry string
Namespace string
Tag string
MaxSessions int
SessionTTL time.Duration
@@ -27,7 +28,12 @@ type Config struct {
func loadConfig() *Config {
return &Config{
Registry: envStr("REGISTRY", "git.igmlcreation.fr"),
// Aligne sur la nouvelle convention de publication des images
// (ghcr.io/igmlcreation/loremind-{core,brain}). L'ancien registre Gitea
// (git.igmlcreation.fr/ietm64/*) n'est plus republie : il restait gele
// sur une vieille version. Le slash final de Namespace est volontaire.
Registry: envStr("REGISTRY", "ghcr.io"),
Namespace: envStr("IMAGE_NAMESPACE", "igmlcreation/loremind-"),
Tag: envStr("TAG", "latest"),
MaxSessions: envInt("MAX_SESSIONS", 10),
SessionTTL: time.Duration(envInt("SESSION_TTL_MINUTES", 20)) * time.Minute,

View File

@@ -111,7 +111,7 @@ func (d *DockerClient) SpawnTrio(ctx context.Context, sessionID string, cfg *Con
if err := d.runContainer(ctx, runSpec{
Name: brainName,
Image: cfg.Registry + "/ietm64/brain:" + cfg.Tag,
Image: cfg.Registry + "/" + cfg.Namespace + "brain:" + cfg.Tag,
Env: []string{
"INTERNAL_SHARED_SECRET=" + brainSecret,
// Pas de provider LLM configure en demo : les features IA echoueront
@@ -129,7 +129,7 @@ func (d *DockerClient) SpawnTrio(ctx context.Context, sessionID string, cfg *Con
if err := d.runContainer(ctx, runSpec{
Name: coreName,
Image: cfg.Registry + "/ietm64/core:" + cfg.Tag,
Image: cfg.Registry + "/" + cfg.Namespace + "core:" + cfg.Tag,
Env: []string{
"SPRING_DATASOURCE_URL=jdbc:postgresql://" + pgName + ":5432/loremind",
"SPRING_DATASOURCE_USERNAME=loremind",

View File

@@ -252,7 +252,11 @@ services:
# API HTTP pour declenchement manuel via le bouton UI (Core -> Watchtower).
WATCHTOWER_HTTP_API_UPDATE: "true"
WATCHTOWER_HTTP_API_PERIODIC_POLLS: "true"
WATCHTOWER_HTTP_API_TOKEN: "${WATCHTOWER_TOKEN:?set WATCHTOWER_TOKEN in .env (re-run installer)}"
# Pas de ":?" ici : Compose interpole TOUT le fichier avant de filtrer
# par profile, donc un ":?" planterait le "up" meme quand autoupdate est
# inactif. L'installeur genere toujours WATCHTOWER_TOKEN ; defaut vide
# pour ne rien casser sur les deploiements sans autoupdate.
WATCHTOWER_HTTP_API_TOKEN: "${WATCHTOWER_TOKEN:-}"
WATCHTOWER_TIMEOUT: 60s
WATCHTOWER_NOTIFICATIONS_LEVEL: info
TZ: ${TZ:-Europe/Paris}