- Início
- Contêiner de desenvolvimento
- Solução de Problemas
Solução de Problemas
O Contêiner Não Inicia
Seção intitulada “O Contêiner Não Inicia””Conflict. The container name is already in use”
Seção intitulada “”Conflict. The container name is already in use””docker rm -f devcontainerdocker compose up -dpodman rm -f devcontainerpodman-compose up -dFerramentas de IA Não Funcionam
Seção intitulada “Ferramentas de IA Não Funcionam””claude: command not found”
Seção intitulada “”claude: command not found””A imagem pode estar desatualizada. Baixe a versão mais recente e reinicie:
docker compose pulldocker compose up -dpodman-compose pullpodman-compose up -dClaude mostra “Not logged in”
Seção intitulada “Claude mostra “Not logged in””O entrypoint popula ~/.claude.json com flags de onboarding. Se estiver ausente:
echo '{"hasCompletedOnboarding": true}' > ~/.claude.jsonClaude mostra “Invalid API key”
Seção intitulada “Claude mostra “Invalid API key””Verifique qual valor está realmente definido:
echo "$ANTHROPIC_API_KEY"Causas comuns:
- Chave do proxy LiteLLM ausente ou inválida — se você está usando o modo proxy, certifique-se de que
LITELLM_API_KEYno.envcontém a credencial de proxy correta, depois reinicie o contêiner para que o entrypoint possa derivarANTHROPIC_API_KEY. - Token OAuth ou incompatibilidade de modo proxy — use exatamente um modo de autenticação. Se
CLAUDE_CODE_OAUTH_TOKENestiver definido, ele tem precedência sobre o modo proxy LiteLLM.
Requisições à API falham com 401
Seção intitulada “Requisições à API falham com 401”Verifique se sua chave de API está configurada corretamente:
echo "$ANTHROPIC_API_KEY"Confirme que funciona fazendo uma chamada direta ao seu provedor.
Claude diz “model not found”
Seção intitulada “Claude diz “model not found””O modelo é determinado pelo seu provedor e chave de API. Consulte a documentação do seu provedor para ver os modelos disponíveis.
GitHub CLI
Seção intitulada “GitHub CLI””gh: not authenticated”
Seção intitulada “”gh: not authenticated””O CLI gh requer uma variável de ambiente GH_TOKEN. Adicione-a ao seu arquivo .env:
GH_TOKEN=ghp_your-token-hereCrie um token em github.com/settings/tokens. Tokens refinados (recomendado) ou tokens clássicos com escopo repo funcionam. Reinicie o contêiner após atualizar o .env.
Clone HTTPS do git falha com 401
Seção intitulada “Clone HTTPS do git falha com 401”Quando GH_TOKEN está definido, o entrypoint executa gh auth setup-git para configurar o auxiliar de credenciais do git para HTTPS. Se operações HTTPS falharem:
- Verifique se o token é válido:
gh auth status - Verifique se o auxiliar de credenciais está configurado:
git config --global credential.helper - Reinicie o contêiner para reexecutar o entrypoint
SSH vs HTTPS
Seção intitulada “SSH vs HTTPS”Ambos os métodos de autenticação podem coexistir no contêiner:
- SSH (
SSH_PRIVATE_KEYno.env) — usa URLsgit@github.com:. Necessário se sua organização exige SSH. - HTTPS (
GH_TOKENno.env) — usa URLshttps://github.com/. Configuração mais simples, sem gerenciamento de chaves.
Se ambos estiverem configurados, o git usa o protocolo que corresponde à URL do remote. Para alternar um clone existente:
# SSH para HTTPSgit remote set-url origin https://github.com/owner/repo.git
# HTTPS para SSHgit remote set-url origin git@github.com:owner/repo.gitProblemas de Permissão
Seção intitulada “Problemas de Permissão””Permission denied” em /workspace ou /home
Seção intitulada “”Permission denied” em /workspace ou /home”sudo chown -R $(id -u):$(id -g) /workspace ~npm install falha com EACCES
Seção intitulada “npm install falha com EACCES”O entrypoint configura automaticamente um prefixo global do npm gravável pelo usuário em ~/.npm-global, então comandos npm install -g em tempo de execução devem funcionar sem sudo. Se você ainda encontrar erros EACCES, aplique a correção manualmente:
mkdir -p ~/.npm-globalnpm config set prefix ~/.npm-globalexport PATH="$HOME/.npm-global/bin:$PATH"Problemas de Build
Seção intitulada “Problemas de Build”O build demora muito tempo
Seção intitulada “O build demora muito tempo”O primeiro build baixa a imagem base (~1 GB). Builds subsequentes usam cache. Se estiver lento toda vez:
docker builder prunepodman builder prune“No space left on device”
Seção intitulada ““No space left on device””docker system prune -a --volumespodman system prune -a --volumesAviso: Isso remove todos os contêineres, imagens e volumes não utilizados — não apenas os deste projeto.
Não é possível acessar a internet de dentro do contêiner
Seção intitulada “Não é possível acessar a internet de dentro do contêiner”ping -c 1 8.8.8.8nslookup google.comcurl -I https://github.comSe o DNS falhar, adicione ao /etc/docker/daemon.json no host:
{ "dns": ["8.8.8.8", "8.8.4.4"]}Em seguida, reinicie o Docker.
Se o DNS falhar, configure o DNS dentro da máquina Podman:
podman machine sshsudo sh -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf'exitOu adicione configurações de DNS ao ~/.config/containers/containers.conf no host:
[containers]dns_servers = ["8.8.8.8", "8.8.4.4"]Em seguida, reinicie o Podman: podman machine stop && podman machine start.
Exibição Remota (noVNC)
Seção intitulada “Exibição Remota (noVNC)”Tela preta no noVNC
Seção intitulada “Tela preta no noVNC”O Xvfb pode não ter iniciado. Verifique dentro do contêiner:
ps aux | grep XvfbSe não estiver em execução, verifique se ENABLE_VNC não está definido como false e reinicie o contêiner.
Erro “Cannot open display” ou “No display”
Seção intitulada “Erro “Cannot open display” ou “No display””A variável de ambiente DISPLAY pode não estar definida. Verifique:
echo "$DISPLAY"Deve ser :99. Se estiver vazia, adicione DISPLAY=:99 ao seu .env ou devcontainer.json e reinicie.
Conexão recusada na porta 6080
Seção intitulada “Conexão recusada na porta 6080”O noVNC pode não estar em execução. Verifique dentro do contêiner:
ps aux | grep -E 'novnc|websockify'Se não estiver em execução, verifique se ENABLE_VNC é true (o padrão) e confira os logs do contêiner:
docker compose logs dev | grep -i vncpodman-compose logs dev | grep -i vncPorta 6080 já em uso
Seção intitulada “Porta 6080 já em uso”Altere a porta do host no docker-compose.yml:
ports: - "127.0.0.1:16080:6080"Chrome DevTools MCP
Seção intitulada “Chrome DevTools MCP”Depuração remota do Chrome não responde
Seção intitulada “Depuração remota do Chrome não responde”A instância compartilhada do Chrome deve estar em execução na porta 9222. Verifique dentro do contêiner:
# O Chrome está em execução?curl http://localhost:9222/json/version
# Verificar logs do Chromecat ~/.local/share/chrome-browser/chrome.log
# Verificar o symlinkls -la /opt/google/chrome/chrome
# Reiniciar o Chrome manualmente. /usr/local/lib/chrome-browser.shstart_chrome_browserSe o symlink estiver ausente, baixe a imagem mais recente e reinicie o contêiner.
Erro de bloqueio de perfil do navegador
Seção intitulada “Erro de bloqueio de perfil do navegador”Com a arquitetura de navegador compartilhado, erros de bloqueio de perfil não devem ocorrer. Se você encontrar um, um processo do Chrome obsoleto pode estar mantendo o bloqueio:
# Encerrar quaisquer processos do Chrome obsoletospkill -f 'chrome.*remote-debugging-port' || true
# Remover o arquivo de bloqueiorm -f ~/.cache/chrome-devtools-mcp/chrome-profile/SingletonLock
# Reiniciar o Chrome. /usr/local/lib/chrome-browser.shstart_chrome_browserFerramentas chrome-devtools-mcp duplicadas
Seção intitulada “Ferramentas chrome-devtools-mcp duplicadas”O servidor chrome-devtools-mcp agora é registrado globalmente em ~/.claude/settings.json. Se você tem um .mcp.json por repositório que também o registra, verá ferramentas duplicadas. Remova a entrada chrome-devtools-mcp dos arquivos .mcp.json por repositório:
# Verificar configuração por repositóriocat .mcp.jsonRemova a chave chrome-devtools-mcp de qualquer .mcp.json por repositório para usar o registro global.
Redefinir Tudo
Seção intitulada “Redefinir Tudo”docker compose down -vdocker rm -f devcontainer 2>/dev/nulldocker compose pulldocker compose up -dpodman-compose down -vpodman rm -f devcontainer 2>/dev/nullpodman-compose pullpodman-compose up -dIsso destrói todos os dados nos volumes. Você precisará clonar repositórios novamente e reconfigurar as ferramentas.