Docs/ Operações/ Acesso ao Terminal

Acesso ao Terminal

Abra uma sessão de shell web em qualquer contêiner em execução diretamente do painel. Depure problemas, execute comandos pontuais e inspecione sua aplicação sem SSH.

Abrindo o Terminal Web

O terminal web fornece uma sessão de shell totalmente interativa dentro de qualquer contêiner em execução. Ele usa WebSockets para transmitir I/O do terminal diretamente ao seu navegador.

  1. Navegue até o serviço que deseja acessar.
  2. Clique na aba Terminal (ou no ícone de terminal no cabeçalho do serviço).
  3. Uma sessão de shell abre automaticamente usando o shell padrão do contêiner (/bin/sh ou /bin/bash se disponível).
Web terminal -- showing a bash session inside a running Node.js container with the container name in the terminal header
Note
O terminal se conecta ao contêiner em execução usando a API exec do Docker. A sessão roda como o mesmo usuário do processo principal do contêiner. Se o contêiner parar ou reiniciar, a sessão do terminal termina.

Selecionando um Contêiner

Se seu serviço tem múltiplas réplicas, o dropdown do terminal permite escolher a qual instância de contêiner se conectar. Cada réplica é listada com seu ID de contêiner e status.

Container selector dropdown -- showing three replicas with their container IDs, status indicators, and resource usage

Você também pode abrir terminais em contêineres de banco de dados. Isso é útil para executar consultas SQL diretas ou inspecionar o estado do banco de dados.

Executando Comandos

O terminal suporta todas as operações padrão de shell. Aqui estão alguns comandos comuns que você pode executar:

Inspecting the environment
# View environment variables
env | sort

# Check disk usage
df -h

# View running processes
ps aux

# Check available memory
free -m
Application debugging
# Check if the app is listening on the expected port
netstat -tlnp

# Test database connectivity
pg_isready -h mydb -p 5432

# View the application directory
ls -la /app

# Check Node.js version
node --version
File inspection
# View a log file
tail -f /app/logs/app.log

# Check configuration
cat /app/config.json

# Search for a string in source files
grep -r "ERROR" /app/logs/

Atalhos do Terminal

O terminal web suporta atalhos de teclado padrão de terminal:

AtalhoAção
Ctrl + CCancelar o comando atual
Ctrl + DFechar a sessão do terminal
Ctrl + LLimpar a tela
TabAuto-completar nomes de arquivo e comandos
Up / DownNavegar histórico de comandos
Ctrl + AMover cursor para início da linha
Ctrl + EMover cursor para fim da linha

Casos de Uso Comuns

Depuração

O terminal é a forma mais rápida de depurar problemas em um contêiner em execução. Você pode inspecionar logs, verificar conectividade de rede, verificar variáveis de ambiente e testar alterações de configuração sem reimplantar.

Debug a connection issue
# Is the database reachable?
ping -c 3 mydb

# Can we connect to it?
psql -h mydb -U sh0 -d myapp -c "SELECT 1;"

# Is our app listening?
curl -v http://localhost:3000/health

Acesso Direto ao Banco de Dados

Abra um terminal no contêiner do banco de dados para executar consultas diretas usando o CLI do banco de dados.

PostgreSQL direct access
# Inside the PostgreSQL container
psql -U sh0 -d myapp

# List tables
\dt

# Run a query
SELECT count(*) FROM users;

Executando Migrações

Execute migrações de banco de dados manualmente quando precisar verificar cada etapa ou solucionar falhas de migração.

Common migration commands
# Django
python manage.py migrate

# Rails
bundle exec rails db:migrate

# Laravel
php artisan migrate

# Prisma
npx prisma migrate deploy
Terminal session showing a Django migration running successfully inside a container

Limitações e Segurança

Há algumas coisas a ter em mente ao usar o terminal web:

  • Sessões efêmeras -- Sessões de terminal não são persistentes. Se a página for fechada ou atualizada, a sessão termina. Quaisquer processos em segundo plano iniciados no terminal continuarão rodando no contêiner.
  • Alterações no sistema de arquivos do contêiner são temporárias -- A menos que você esteja editando arquivos em um volume montado, alterações no sistema de arquivos são perdidas quando o contêiner reinicia.
  • Sem upload/download de arquivos -- Use o Gerenciador de Arquivos para transferir arquivos de e para contêineres.
  • Autenticação necessária -- O acesso ao terminal requer uma sessão válida no painel. Apenas membros da equipe com a função apropriada podem acessar o terminal.
Warning
O terminal fornece acesso total ao shell do contêiner. Tenha cuidado com comandos destrutivos. Alterações em arquivos da aplicação fora de volumes montados serão perdidas na próxima implantação ou reinicialização.