7.9 KiB
CarneiroTech - Deployment Guide
🚀 Deploy para Produção (OCI)
O site CarneiroTech está hospedado no servidor OCI (Oracle Cloud Infrastructure) com IP final 218.
Arquitetura
Internet
↓
Nginx (Port 80/443)
↓
Docker Container (Port 5008)
↓
ASP.NET Core MVC App
📋 Informações do Servidor
- Servidor:
ubuntu@129.146.116.218 - Diretório:
/home/ubuntu/apps/carneirotech - Container:
carneirotech-web - Porta Interna:
5008 - Domínio:
carneirotech.com - SSL: Let's Encrypt (auto-renovação configurada)
🔧 Como Fazer Deploy
Opção 1: Deploy Automático (Recomendado)
Execute o script de deploy da sua máquina local:
cd /mnt/c/Users/ricar/Nextcloud/CarneiroTech/Site/aspnet/CarneiroTech
./deploy-to-oci.sh
O script irá:
- ✅ Criar pacote compactado excluindo bin/obj
- ✅ Transferir para servidor via SCP
- ✅ Extrair arquivos
- ✅ Fazer backup da imagem anterior
- ✅ Fazer build da nova imagem
- ✅ Parar container antigo
- ✅ Subir container novo
- ✅ Verificar health check
- ✅ Limpar imagens antigas (mantém últimas 3)
Rollback automático: Se o health check falhar, o script restaura automaticamente a versão anterior.
Opção 2: Deploy Manual
- Conectar no servidor:
ssh ubuntu@129.146.116.218
cd ~/apps/carneirotech
- Transferir arquivos alterados (da sua máquina):
scp arquivo.cs ubuntu@129.146.116.218:~/apps/carneirotech/Controllers/
- No servidor, fazer rebuild e restart:
./deploy.sh
🔍 Comandos Úteis
Ver logs do container
ssh ubuntu@129.146.116.218 "docker logs carneirotech-web --tail=50 -f"
Verificar status
ssh ubuntu@129.146.116.218 "docker ps --filter name=carneirotech"
Entrar no container
ssh ubuntu@129.146.116.218 "docker exec -it carneirotech-web bash"
Reiniciar container
ssh ubuntu@129.146.116.218 "cd ~/apps/carneirotech && docker compose restart"
Ver logs do Nginx
ssh ubuntu@129.146.116.218 "sudo tail -f /var/log/nginx/access.log"
ssh ubuntu@129.146.116.218 "sudo tail -f /var/log/nginx/error.log"
Testar Nginx config
ssh ubuntu@129.146.116.218 "sudo nginx -t"
Recarregar Nginx
ssh ubuntu@129.146.116.218 "sudo systemctl reload nginx"
📁 Estrutura de Arquivos no Servidor
/home/ubuntu/apps/carneirotech/
├── Content/ # Markdown files dos cases
├── Controllers/ # MVC Controllers
├── Models/ # Models
├── Services/ # Services (CaseService)
├── Views/ # Razor Views
├── wwwroot/ # Static files (CSS, JS, images)
├── Dockerfile # Docker build instructions (ARM64)
├── docker-compose.yml # Docker Compose config
├── deploy.sh # Deploy script (no servidor)
└── CarneiroTech.csproj # Project file
/etc/nginx/sites-available/
└── carneirotech.com.conf # Nginx proxy config
/etc/letsencrypt/live/carneirotech.com/
├── fullchain.pem # SSL certificate
└── privkey.pem # SSL private key
🔐 SSL / HTTPS
O certificado SSL é gerenciado automaticamente pelo Let's Encrypt via Certbot.
Renovação Automática
O Certbot está configurado para renovar automaticamente. Verifique o status:
ssh ubuntu@129.146.116.218 "sudo certbot certificates"
Renovar Manualmente (se necessário)
ssh ubuntu@129.146.116.218 "sudo certbot renew"
Adicionar www.carneirotech.com
Quando você adicionar o registro DNS para www.carneirotech.com:
- Adicionar ao Namecheap (A record apontando para 129.146.116.218)
- Atualizar certificado SSL:
ssh ubuntu@129.146.116.218 "sudo certbot certonly --nginx -d carneirotech.com -d www.carneirotech.com --expand"
- Atualizar nginx config:
ssh ubuntu@129.146.116.218 "sudo nano /etc/nginx/sites-available/carneirotech.com.conf"
Adicionar www.carneirotech.com no server_name de ambos os blocos server.
- Recarregar nginx:
ssh ubuntu@129.146.116.218 "sudo nginx -t && sudo systemctl reload nginx"
🧹 Manutenção
Limpar imagens Docker antigas
ssh ubuntu@129.146.116.218 "docker image prune -a"
Limpar containers parados
ssh ubuntu@129.146.116.218 "docker container prune"
Ver uso de disco
ssh ubuntu@129.146.116.218 "df -h"
Ver uso de Docker
ssh ubuntu@129.146.218 "docker system df"
🐛 Troubleshooting
Site não carrega (502 Bad Gateway)
- Verificar se container está rodando:
ssh ubuntu@129.146.116.218 "docker ps --filter name=carneirotech"
- Ver logs do container:
ssh ubuntu@129.146.116.218 "docker logs carneirotech-web --tail=100"
- Reiniciar container:
ssh ubuntu@129.146.116.218 "cd ~/apps/carneirotech && docker compose restart"
Container não sobe (unhealthy)
- Ver logs detalhados:
ssh ubuntu@129.146.116.218 "docker logs carneirotech-web"
- Verificar health check manualmente:
ssh ubuntu@129.146.116.218 "curl http://localhost:5008/"
- Entrar no container para debug:
ssh ubuntu@129.146.116.218 "docker exec -it carneirotech-web bash"
Build falha
- Verificar se há espaço em disco:
ssh ubuntu@129.146.116.218 "df -h"
- Limpar cache do Docker:
ssh ubuntu@129.146.116.218 "docker builder prune -a"
- Fazer build com logs detalhados:
ssh ubuntu@129.146.116.218 "cd ~/apps/carneirotech && docker compose build --no-cache --progress=plain"
SSL expirado
Renovar manualmente:
ssh ubuntu@129.146.116.218 "sudo certbot renew --force-renewal"
📊 Monitoramento
Health Check Endpoint
O container tem health check automático configurado:
- URL:
http://localhost:5008/ - Intervalo: 30s
- Timeout: 3s
- Start Period: 40s
Ver status de saúde
ssh ubuntu@129.146.116.218 "docker inspect carneirotech-web | grep -A 10 Health"
🔄 Workflow de Desenvolvimento
-
Desenvolver localmente (Windows)
cd C:\Users\ricar\Nextcloud\CarneiroTech\Site\aspnet\CarneiroTech dotnet run -
Testar mudanças (http://localhost:5000)
-
Fazer deploy para produção
./deploy-to-oci.sh -
Verificar em produção (https://carneirotech.com)
📝 Notas Importantes
- ⚠️ O servidor usa ARM64 (Ampere). O Dockerfile está otimizado para isso.
- ⚠️ Não use
docker-composesemdeploy.sh- pode causar downtime sem rollback. - ⚠️ Sempre teste localmente antes de fazer deploy.
- ⚠️ O script de deploy faz backup automático - use sem medo!
- ⚠️ Arquivos Markdown (Content/Cases/*.md) são incluídos no build.
✅ Checklist de Deploy
Antes de fazer deploy, verifique:
- Código compilou localmente sem erros
- Testou localmente (dotnet run)
- Commitou mudanças no Git (quando configurar)
- Executou
./deploy-to-oci.sh - Verificou logs:
docker logs carneirotech-web - Testou site:
https://carneirotech.com - Verificou que cases Markdown aparecem corretamente
🆘 Suporte
Em caso de problemas críticos:
-
Ver logs em tempo real:
ssh ubuntu@129.146.116.218 "docker logs carneirotech-web -f" -
Rollback para versão anterior (automático no deploy.sh)
-
Se precisar voltar manualmente:
ssh ubuntu@129.146.116.218 cd ~/backups/carneirotech # Ver backups disponíveis docker images | grep carneirotech-web # Usar backup específico docker tag <BACKUP_IMAGE_ID> carneirotech-carneirotech-web cd ~/apps/carneirotech docker compose up -d
Deployment criado em: 21 de Dezembro de 2024 Última atualização: 21 de Dezembro de 2024 Servidor: OCI (Oracle Cloud) - ARM64 (Ampere) Status: ✅ Produção