Files
rx.scoreodonto.com/docker-compose.prod.yml
T
VPS 4 Deploy Agent 2d94a08c54
build-and-promote / build (push) Has been skipped
build-and-promote / promote (push) Successful in 7m13s
build: registry pela VPN (10.99.0.3:3000), padrão da stack
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>
2026-07-11 04:25:02 +02:00

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}