line-gestao-api/DEPLOY.md

2.7 KiB

Deploy rápido (API + Postgres)

Erro: no configuration file provided: not found

Esse erro acontece quando o docker compose é executado em uma pasta sem docker-compose.yml.

Este repositório inclui docker-compose.yml na raiz do projeto.

Opção 1: subir via IP (rápido)

  1. Entre na pasta da API:
cd ~/apps/line-gestao-api
  1. Crie o .env a partir do exemplo:
cp .env.example .env
nano .env
  1. Suba os containers:
docker compose up -d --build
  1. Verifique o status e logs:
docker compose ps
docker compose logs -f --tail=200
  1. Teste healthcheck da API:
curl -I http://SEU_SERVIDOR:4000/health

Opção 2: subir já com domínio + HTTPS automático (Traefik)

Pré-requisitos

  • O DNS do domínio/subdomínio da API deve apontar para o IP do servidor (registro A).
  • Portas 80 e 443 abertas no firewall/security group.

1) Ajuste o .env

Na pasta da API:

cd ~/apps/line-gestao-api
cp .env.example .env
nano .env

Preencha obrigatoriamente:

  • API_DOMAIN (ex.: api.seudominio.com)
  • ACME_EMAIL (email para emitir certificado)
  • FRONTEND_PUBLIC_URL (URL pública do front)
  • JWT_KEY, SEED_ADMIN_*, POSTGRES_PASSWORD

2) Suba em modo produção com Traefik

docker compose -f docker-compose.prod.yml up -d --build

3) Verifique saúde e certificado

docker compose -f docker-compose.prod.yml ps
docker compose -f docker-compose.prod.yml logs -f --tail=200
curl -i https://SEU_API_DOMAIN/health

Checklist de confirmação (API realmente no ar)

Considere que o deploy está concluído quando todos os itens abaixo estiverem OK:

docker compose ps
curl -i http://127.0.0.1:4000/health
curl -i http://SEU_IP_PUBLICO:4000/health

Para produção com domínio:

docker compose -f docker-compose.prod.yml ps
curl -i https://SEU_API_DOMAIN/health

Resultado esperado:

  • container linegestao-api com status healthy;
  • container linegestao-db com status healthy;
  • endpoint /health respondendo HTTP/1.1 200 OK.

Atualizando um clone já existente no servidor

cd ~/apps/line-gestao-api
git fetch --all --prune
git pull --rebase origin NOME_DA_BRANCH

Depois de atualizar, suba com o arquivo que você usa:

# modo IP
docker compose up -d --build

# modo domínio + HTTPS
docker compose -f docker-compose.prod.yml up -d --build

Observações

  • O Postgres não é exposto para fora do Docker (sem 5432:5432).
  • No modo IP, a API sobe na porta 4000 do host (4000:8080).
  • No modo domínio, a API fica atrás do Traefik em 443 (HTTPS).
  • Defina valores fortes para JWT_KEY, SEED_ADMIN_PASSWORD e POSTGRES_PASSWORD.