La prod servait encore a70e0e4 (25/07) alors que main en etait a 79 commits
plus loin : les stacks luz et dev-luz epinglaient « :develop », un tag que la
CI de l'app ne pousse plus depuis qu'elle ne se declenche que sur main
(images.yml publie sha-<court>, main et latest).
Rien ne le signalait : Watchtower repondait bien 200 a /v1/update, ne trouvait
aucune image plus recente pour « :develop » et ne recreait donc rien. Seule la
verification post-deploiement de la CI a fini par le dire.
Les quatre images (backend + webapp, prod et dev-luz) visent desormais « :main ».
Les en-tetes des deux stacks rappellent que ce tag doit rester celui que publie
images.yml, changer l'un imposant de changer l'autre.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Watchtower déclenchait bien /v1/update (200) mais échouait à tirer
luz-backend/luz-webapp :develop (« unauthorized: reqPackageAccess »),
d'où Updated=0 silencieux : les conteneurs n'étaient jamais recréés et
la prod restait figée sur une ancienne image malgré une CI verte.
Le montage de /root/.docker/config.json était inopérant (le docker login
du CI a lieu sur le runner, pas sur l'hôte). On le remplace par des
identifiants de pull explicites REPO_USER/REPO_PASS (PAT read:package,
via REGISTRY_USER/REGISTRY_PASS du .env). .env.example documenté.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Aligne le nom du front sur celui du backend (luz-backend) et renomme les
identifiants Traefik associés (routeur/service luz → luz-webapp). La règle
Host(`luz.goutailler-olivier.com`) est inchangée : le site reste servi.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Le tag :latest n'est jamais produit (l'app ne pousse que develop) → « manifest
unknown » au pull. La prod tire désormais git.goutailler-olivier.com/luz/luz-*:develop,
comme dev-luz, en conservant sa base persistante et son absence de profil dev.
Labels Watchtower conservés : la prod se recrée automatiquement à chaque push develop.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Remplace les images locales « localhost/luz-*:latest » (ex-deploy.sh SSH, supprimé)
par « git.goutailler-olivier.com/luz/luz-*:latest » et ajoute le label
com.centurylinklabs.watchtower.enable=true sur backend et webapp. La prod suit
désormais le tag :latest (publié par la CI sur push main), séparée de dev-luz
(:develop). Met à jour le bandeau de tête en conséquence.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Les images pointent désormais sur git.goutailler-olivier.com/luz/luz-*:develop
(publiées par la CI) au lieu de localhost/luz-*:dev transférées en SSH. Les
services backend/webapp portent le label watchtower.enable=true : Watchtower
tire la nouvelle image et recrée le conteneur dès que la CI la pousse.
Prérequis serveur : docker login sur le registre (root) pour tirer les images
privées de l'org luz.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Ajoute l'environnement de test luz-dev/ (webapp + backend /api + PostgreSQL,
profil Spring dev avec seed) et complète le stack prod luz/ avec db + backend
sur luz.goutailler-olivier.com/api. Images chargées en direct par SSH via
Luz/script/deploy.sh (sans registre), d'où les tags localhost/luz-*.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Clone ou met à jour Gato/Olhar (main), build les deux images
Docker localement, puis relance le stack via docker compose.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- olhar/docker-compose.yml : fusion des services db (postgres:16) +
api (olhar-api:latest) + pwa (olhar-pwa:latest) dans un seul stack
- olhar/.env.example : POSTGRES_PASSWORD + JWT_SECRET
- olhar-api/ : dossier supprimé (contenu intégré dans olhar/)
- Données migrées vers ~/Applications/data/olhar/ (au lieu de olhar-api/)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Docker Compose calqué sur bonsai-api : PostgreSQL 16 + Spring Boot exposé
sur olhar.goutailler-olivier.com/api via Traefik, avec Watchtower activé.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>