line-gestao-api/DEPLOY.md

80 lines
2.0 KiB
Markdown

# 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.
## Passo a passo
1. Entre na pasta da API:
```bash
cd ~/apps/line-gestao-api
```
2. Crie o `.env` a partir do exemplo:
```bash
cp .env.example .env
nano .env
```
3. Suba os containers:
```bash
docker compose up -d --build
```
4. Verifique o status e logs:
```bash
docker compose ps
docker compose logs -f --tail=200
```
5. Teste healthcheck da API:
```bash
curl -I http://SEU_SERVIDOR:4000/health
```
## Checklist de confirmação (API realmente no ar)
Considere que o deploy está concluído quando **todos** os itens abaixo estiverem OK:
```bash
docker compose ps
curl -i http://127.0.0.1:4000/health
curl -i http://SEU_IP_PUBLICO:4000/health
```
Resultado esperado:
- container `linegestao-api` com status `healthy`;
- container `linegestao-db` com status `healthy`;
- endpoint `/health` respondendo `HTTP/1.1 200 OK`.
## Domínio (DNS + proxy reverso)
Com o compose atual, a API está disponível em `http://SEU_IP:4000`.
Para usar domínio em produção, faça:
1. Crie/ajuste o DNS do domínio para apontar para o IP do servidor (registro `A`).
2. Coloque um proxy reverso na frente da API (Nginx, Traefik ou Caddy).
3. Emita TLS/HTTPS (Let's Encrypt).
4. Atualize `FRONTEND_PUBLIC_URL` no `.env` para a URL pública do front-end.
Sem proxy+HTTPS, o domínio pode até abrir via HTTP, mas não é recomendado para produção.
## Atualizando um clone já existente no servidor
```bash
cd ~/apps/line-gestao-api
git fetch --all --prune
git pull --rebase origin NOME_DA_BRANCH
docker compose up -d --build
```
## Observações
- O Postgres **não é exposto** para fora do Docker (sem `5432:5432`).
- A API sobe na porta `4000` do host (`4000:8080`).
- Defina valores fortes para `JWT_KEY`, `SEED_ADMIN_PASSWORD` e `POSTGRES_PASSWORD`.