2d94a08c54
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>
23 lines
1.3 KiB
YAML
23 lines
1.3 KiB
YAML
# Override de PRODUÇÃO (VPS1): roda a IMAGEM VERSIONADA do registry em vez de buildar.
|
|
# A produção não builda — só consome a imagem pronta publicada pela CI (build once).
|
|
#
|
|
# Uso (na VPS1), via deploy-prod.sh <tag> <commit>, que exporta RX_TAG/RX_COMMIT e faz:
|
|
# docker compose -f docker-compose.yml -f docker-compose.prod.yml pull app
|
|
# docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d --no-build app
|
|
# O --no-build garante que o build: do compose base seja ignorado (usa a imagem puxada).
|
|
#
|
|
# VERSÃO EM RUNTIME: a versão semântica exibida (badge → /api/health) vem da TAG promovida,
|
|
# injetada via `environment` abaixo — NÃO do build. Assim a MESMA imagem pode ser promovida
|
|
# sob qualquer tag sem rebuild (pré-requisito do "build once, promote the same artifact").
|
|
# O `commit` também é injetado em runtime (vem do CI que buildou a imagem do commit).
|
|
services:
|
|
app:
|
|
# Registry pela VPN (10.99.0.3:3000), não git.clube67.com — o proxy HTTPS corta
|
|
# uploads grandes. `:?` (não `:-latest`): sem RX_TAG o deploy ABORTA, em vez de
|
|
# subir uma imagem indeterminada. Requer insecure-registries no daemon da VPS1.
|
|
image: "10.99.0.3:3000/ruicesar/rx-scoreodonto:${RX_TAG:?defina RX_TAG}"
|
|
environment:
|
|
- APP_VERSION=${RX_TAG}
|
|
- APP_ENV=PROD
|
|
- GIT_COMMIT=${RX_COMMIT:-dev}
|