Migra o RX para o mesmo padrão de scoreodonto/newwhats: imagens publicadas e
puxadas por 10.99.0.3:3000 (WireGuard), não git.clube67.com — o proxy HTTPS
público corta uploads em ~60s, então blobs grandes não sobem por ele. Mesmo
Gitea/storage; verificado que 10.99.0.3:3000/ruicesar/rx-scoreodonto:v2.2.0
entrega o mesmo image id que roda em prod, então o rollback para tags antigas
segue válido.
- build.yml: registry VPN; promote copia o manifest pela API v2 (buildx imagetools
não fala HTTP) e autentica com o docker login do runner (não há secret
REGISTRY_TOKEN neste repo).
- docker-compose.prod.yml: image → VPN; ${RX_TAG:?} no lugar de :-latest (sem a
tag o deploy ABORTA em vez de subir imagem indeterminada).
- deploy-prod.sh: pull pela VPN com fallback à imagem local de tag exata; poda de
imagens antigas ao fim (mantém as 2 mais recentes, best-effort).
Requer insecure-registries: ["10.99.0.3:3000"] no daemon da VPS1 e do runner
(já configurado para os outros projetos).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- .gitea/workflows/build.yml: push->build rx-scoreodonto:<sha> no registry; tag->promote+deploy
- docker-compose.prod.yml: image do registry, APP_VERSION/GIT_COMMIT em runtime
- deploy-prod.sh: VPS1 pull + up --no-build (antigo vira deploy-prod-legado-webhook.sh)
- /api/health usa APP_VERSION (tag) com fallback version.txt; badge no canto
- webhook 9003 aposentado (gatilho agora e CI/tag)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>