fix(watchtower): authentifie le pull des images privées Gitea (reqPackageAccess)

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>
This commit is contained in:
2026-07-22 07:07:07 +02:00
parent 2b2a924916
commit 9a37ed4b8f
2 changed files with 17 additions and 1 deletions
+9 -1
View File
@@ -7,12 +7,20 @@ services:
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /root/.docker/config.json:/root/.docker/config.json:ro
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 :develop
# (« 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