🐳 Portainer - Setup e Integração
📋 Visão Geral
Portainer é uma interface gráfica web para gerenciar Docker Swarm e containers. Foi integrado ao ecossistema C-Suite para facilitar o gerenciamento de containers, stacks, serviços e recursos Docker.
✨ Funcionalidades
- ✅ Gerenciamento de Stacks: Deploy, update e remoção de stacks
- ✅ Gerenciamento de Serviços: Visualizar, escalar e atualizar serviços
- ✅ Monitoramento: Logs, estatísticas e métricas em tempo real
- ✅ Terminal Integrado: Acesso SSH direto aos containers
- ✅ Gerenciamento de Imagens: Pull, push e remoção de imagens
- ✅ Volumes e Networks: Gerenciar recursos Docker
- ✅ Templates: Deploy rápido de aplicações
🚀 Instalação Rápida
Opção 1: Script Automatizado (Recomendado)
cd /home/ec2-user/enviroment/apps/c-suite
./scripts/deploy_portainer.sh
Opção 2: Deploy Manual
cd /home/ec2-user/enviroment/apps/c-suite
docker stack deploy -c portainer/docker-stack.yml portainer
Verificar Instalação
# Verificar status
docker service ls | grep portainer
# Ver logs
docker service logs -f portainer_portainer
# Verificar acesso
curl -I https://portainer.internut.com.br
🔧 Configuração Inicial
1. Primeiro Acesso
- Acesse: https://portainer.internut.com.br
- Crie o usuário administrador inicial
- Defina uma senha forte
2. Conectar ao Docker Swarm
- Environments → Add environment
- Selecione Docker Swarm
- Nome:
C-Suite Swarm - Endpoint URL:
unix:///var/run/docker.sock - Clique em Connect
3. Verificar Conexão
- Home → Deve mostrar o ambiente "C-Suite Swarm"
- Dashboard → Deve mostrar estatísticas do cluster
- Stacks → Deve listar todos os stacks do ecossistema
📊 Uso no Ecossistema C-Suite
Gerenciar Stacks
- Stacks → Ver todos os stacks:
csuite-executivecsuite-contextcsuite-cashflowcsuite-gatewaycsuite-authobserv(Prometheus/Grafana)-
portainer -
Deploy Stack:
- Clique em Add stack
- Cole o conteúdo do
docker-stack.yml - Defina nome e variáveis de ambiente
-
Clique em Deploy the stack
-
Update Stack:
- Selecione o stack
- Clique em Editor
- Modifique o YAML
- Clique em Update the stack
Gerenciar Serviços
- Services → Ver todos os serviços
- Inspect → Ver detalhes, configuração e labels
- Logs → Ver logs em tempo real
- Scale → Aumentar/diminuir réplicas
- Update → Atualizar configuração (imagem, variáveis, etc.)
Monitoramento
- Dashboard → Visão geral:
- Total de containers
- Uso de CPU/Memória
- Stacks e serviços
-
Nodes do Swarm
-
Containers → Lista de containers:
- Status (running/stopped)
- Uso de recursos
- Logs
-
Terminal
-
Images → Gerenciar imagens:
- Pull novas imagens
- Remover imagens não utilizadas
- Ver histórico
🔐 Segurança
Recomendações
- Senha Forte: Use senha complexa para admin
- HTTPS: Já configurado via Traefik/Let's Encrypt
- Acesso Restrito: Considere restringir por IP (opcional)
- Backup: Faça backup regular do volume
portainer_data - Updates: Mantenha Portainer atualizado
Restringir Acesso por IP (Opcional)
Edite portainer/docker-stack.yml e adicione:
labels:
- "traefik.http.middlewares.portainer-ipwhitelist.ipwhitelist.sourcerange=192.168.1.0/24,10.0.0.0/8"
- "traefik.http.routers.portainer.middlewares=portainer-headers,portainer-ipwhitelist"
🔄 Integração com Gateway
O Portainer está integrado ao CSuite Gateway e aparece no dashboard unificado:
- URL no Gateway: https://csuite.internut.com.br
- Card Portainer: Aparece na seção "Dashboards"
- Health Check: Status verificado automaticamente
📝 Comandos Úteis
Deploy/Update
# Deploy
docker stack deploy -c portainer/docker-stack.yml portainer
# Update (após mudanças)
docker stack deploy -c portainer/docker-stack.yml portainer
# Remover
docker stack rm portainer
Backup
# Backup do volume
docker run --rm \
-v portainer_portainer_data:/data \
-v $(pwd):/backup \
alpine tar czf /backup/portainer-backup-$(date +%Y%m%d).tar.gz /data
# Restore
docker run --rm \
-v portainer_portainer_data:/data \
-v $(pwd):/backup \
alpine tar xzf /backup/portainer-backup-YYYYMMDD.tar.gz -C /
Troubleshooting
# Ver logs
docker service logs -f portainer_portainer
# Verificar socket
docker exec $(docker ps -q -f name=portainer) ls -la /var/run/docker.sock
# Reiniciar serviço
docker service update --force portainer_portainer
🐛 Troubleshooting
Portainer não inicia
Sintoma: Serviço não aparece ou não inicia
Solução:
# Verificar logs
docker service logs portainer_portainer
# Verificar se socket está montado
docker service inspect portainer_portainer | grep -A 5 Mounts
Erro de conexão com Docker
Sintoma: "Unable to connect to Docker environment"
Solução:
- Verifique se /var/run/docker.sock está montado
- Verifique permissões do socket
- Reinicie o serviço: docker service update --force portainer_portainer
WebSocket não funciona
Sintoma: Terminal ou logs não carregam
Solução:
- Verifique middleware portainer-headers no Traefik
- Verifique se X-Forwarded-Proto: https está configurado
- Verifique logs do Traefik
Certificado SSL inválido
Sintoma: Erro de certificado ao acessar
Solução:
- Aguarde alguns minutos para Let's Encrypt gerar certificado
- Verifique logs do Traefik: docker service logs traefik
- Verifique se o domínio está correto
📚 Recursos Adicionais
- Documentação Oficial: https://docs.portainer.io/
- GitHub: https://github.com/portainer/portainer
- Community Edition: Gratuita e open-source
- Fórum: https://github.com/portainer/portainer/discussions
✅ Checklist de Instalação
- [ ] Stack deployado com sucesso
- [ ] Serviço rodando (
docker service ls) - [ ] Acessível via https://portainer.internut.com.br
- [ ] Usuário admin criado
- [ ] Ambiente Docker Swarm conectado
- [ ] Stacks do C-Suite visíveis
- [ ] Logs funcionando
- [ ] Terminal funcionando
- [ ] Integrado ao Gateway (aparece no dashboard)
Última atualização: 2025-12-06