Pular para conteúdo

Deploy no Coolify

Guia completo para deploy em produção usando Coolify.


Pré-requisitos

  • Servidor com Coolify instalado
  • Domínio configurado (ex: api.suaclinica.com.br, app.suaclinica.com.br)
  • Repositório Git (GitHub/GitLab)

Passo 1: Conectar Repositório

Repositório Público

  1. No Coolify → + New ResourcePublic Repository
  2. Cole a URL HTTPS: https://github.com/seu-usuario/django-nuxt-clinic.git
  3. Selecione branch: main

Repositório Privado

  1. No Coolify → SettingsKeys & Tokens
  2. Clique + Add → Gere uma Deploy Key
  3. Copie a chave pública
  4. No GitHub → Repositório → SettingsDeploy KeysAdd
  5. Cole a chave e marque Allow write access
  6. Volte ao Coolify e adicione o repositório

Passo 2: Configurar Build

Campo Valor
Build Pack Docker Compose
Docker Compose Location docker-compose.prod.yml
Branch main

Passo 3: Variáveis de Ambiente

No Coolify, vá em Environment Variables e adicione:

Obrigatórias

# Segurança (gere uma chave forte)
SECRET_KEY=sua-chave-secreta-muito-longa-e-aleatoria-123456

# Banco de dados
POSTGRES_PASSWORD=senha-forte-banco-123
POSTGRES_USER=postgres
POSTGRES_DB=myclinic

# Hosts (seus domínios)
ALLOWED_HOSTS=api.suaclinica.com.br,backend
CORS_ORIGINS=https://app.suaclinica.com.br

# API URL para o frontend
NUXT_PUBLIC_API_URL=https://api.suaclinica.com.br

Gerar SECRET_KEY

python -c "import secrets; print(secrets.token_urlsafe(50))"

Passo 4: Configurar Domínios

No Coolify, configure os domínios para cada serviço:

Backend

  1. Clique no serviço backend
  2. Domains → Adicione: api.suaclinica.com.br
  3. Port: 8000
  4. Ative SSL/HTTPS

Frontend

  1. Clique no serviço frontend
  2. Domains → Adicione: app.suaclinica.com.br
  3. Port: 3000
  4. Ative SSL/HTTPS

Passo 5: Deploy

  1. Clique em Deploy
  2. Acompanhe os logs de build
  3. Aguarde todos os serviços ficarem Running

Passo 6: Primeiro Acesso

Rodar Migrações

# No terminal do Coolify ou SSH
docker exec -it <container-backend> python manage.py migrate

Criar Superusuário

docker exec -it <container-backend> python manage.py createsuperuser

Criar Dados Iniciais (opcional)

docker exec -it <container-backend> python manage.py seed --run

Estrutura de Produção

graph LR
    subgraph Internet
        U[Usuários]
    end

    subgraph Coolify
        T[Traefik/Caddy]

        subgraph Docker
            F[Frontend:3000]
            B[Backend:8000]
            DB[(PostgreSQL)]
        end
    end

    U -->|app.suaclinica.com.br| T
    U -->|api.suaclinica.com.br| T
    T -->|HTTPS| F
    T -->|HTTPS| B
    B --> DB
    F -->|API calls| B

Troubleshooting

Build falhou

Erro: Please load a Compose file

  • Verifique se o campo Docker Compose Location está correto: docker-compose.prod.yml
  • Faça Reload Repository no Coolify

502 Bad Gateway

  • Verifique se o container está rodando: docker ps
  • Cheque os logs: docker logs <container>
  • Confirme que a porta está correta no Coolify

CORS Error

  • Verifique CORS_ORIGINS inclui o domínio do frontend
  • Formato correto: https://app.suaclinica.com.br (com https, sem barra final)

Erro de Banco de Dados

# Verificar conexão
docker exec -it <container-backend> python manage.py dbshell

# Re-rodar migrações
docker exec -it <container-backend> python manage.py migrate

Webhooks para Deploy Automático

  1. No Coolify → Aplicação → Webhooks
  2. Copie a URL do webhook
  3. No GitHub → SettingsWebhooksAdd webhook
  4. Cole a URL
  5. Content type: application/json
  6. Events: Just the push event

Agora, cada git push dispara deploy automático! 🚀


Backup do Banco

Criar backup

docker exec <container-db> pg_dump -U postgres myclinic > backup.sql

Restaurar backup

docker exec -i <container-db> psql -U postgres myclinic < backup.sql

Checklist de Produção

  • [x] SECRET_KEY forte e única
  • [x] DEBUG=False
  • [x] ALLOWED_HOSTS configurado
  • [x] CORS_ORIGINS configurado
  • [x] HTTPS ativado
  • [x] Senha forte no PostgreSQL
  • [x] Backup configurado
  • [x] Monitoramento de logs