Files
Infra/watchtower/docker-compose.yml
T
Gato 5558c206a0 fix(luz): les stacks suivent le tag :main, publié par la CI
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>
2026-07-26 21:59:37 +02:00

39 lines
1.4 KiB
YAML

name: watchtower
services:
watchtower:
image: containrrr/watchtower
container_name: watchtower
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
WATCHTOWER_HTTP_API_UPDATE: "true"
WATCHTOWER_HTTP_API_TOKEN: ${WATCHTOWER_TOKEN}
WATCHTOWER_LABEL_ENABLE: "true"
WATCHTOWER_CLEANUP: "true"
# Identifiants de pull du registre Gitea privé (git.goutailler-olivier.com).
# Sans eux, Watchtower échoue à tirer luz-backend/luz-webapp :main
# (« unauthorized: reqPackageAccess ») et ne recrée jamais les conteneurs
# — le déploiement reste bloqué en silence (Updated=0, mais /v1/update → 200).
# Un PAT en LECTURE seule (scope read:package) sur l'org Luz suffit.
# Remplace l'ancien montage de /root/.docker/config.json, qui côté hôte
# ne contenait aucune auth (le docker login du CI a lieu sur le runner).
REPO_USER: ${REGISTRY_USER}
REPO_PASS: ${REGISTRY_PASS}
TZ: Europe/Paris
networks:
- proxy
labels:
- traefik.enable=true
- traefik.http.routers.watchtower.rule=Host(`watchtower.goutailler-olivier.com`)
- traefik.http.routers.watchtower.entrypoints=websecure
- traefik.http.routers.watchtower.tls.certresolver=le
- traefik.http.services.watchtower.loadbalancer.server.port=8080
- traefik.docker.network=proxy
networks:
proxy:
external: true
name: proxy