CI/CD Pipeline — SaaS Imobiliária
Fluxo
push main → Build images → Push registry → Deploy Portainer → Health checks HTTPS
Configurar no Forgejo (Settings → Secrets & Variables)
Secrets (valores sensíveis)
| Secret |
Descrição |
REGISTRY_USER |
Usuário do registry (ex: gitadmin) |
REGISTRY_PASSWORD |
Senha ou token do registry |
PORTAINER_WEBHOOK_URL |
URL do webhook do stack no Portainer |
POSTGRES_DB |
Nome do banco de dados |
POSTGRES_USER |
Usuário do PostgreSQL |
POSTGRES_PASSWORD |
Senha do PostgreSQL |
SECRET_KEY |
Flask SECRET_KEY |
JWT_SECRET_KEY |
Chave JWT (mín. 32 chars) |
Variables (valores não-sensíveis)
| Variable |
Exemplo |
REGISTRY |
git.matheussouza.com.br/gitadmin |
DOMAIN |
imobiliaria.matheussouza.com.br |
Configurar no Portainer
- Crie um Stack com o arquivo
docker-compose.prod.yml
- Ative o webhook do stack (Stack → Webhooks → Enable)
- Copie a URL do webhook → cole em
PORTAINER_WEBHOOK_URL
- Certifique-se que a rede
traefik-public existe:
docker network create traefik-public
Traefik — pré-requisitos
O Traefik deve estar rodando com:
- Entrypoint
web (porta 80)
- Entrypoint
websecure (porta 443)
- CertResolver
letsencrypt configurado
- Conectado à rede
traefik-public
Exemplo mínimo de configuração do Traefik:
# traefik.yml
entryPoints:
web:
address: ":80"
websecure:
address: ":443"
certificatesResolvers:
letsencrypt:
acme:
email: seu@email.com
storage: /letsencrypt/acme.json
httpChallenge:
entryPoint: web