Pular para o conteúdo

Perfilamento Docker

Recurso Pro

Perfilamento Docker requer uma licença Pro.

Perfile aplicações Java executando em contêineres Docker locais com descoberta automática.


GalataJ descobre automaticamente aplicações Java executando dentro de contêineres Docker na sua máquina local.

  1. Inicie seu contêiner Docker com uma aplicação Java
  2. Abra o painel Profiler no seu IDE
  3. Clique em Atualizar — contêineres Docker aparecem na lista de JVMs
  4. Selecione o contêiner e inicie o perfilamento

Nenhuma configuração necessária. GalataJ gerencia a conexão automaticamente.

JDK recomendado para conexão automática

Se seu contêiner usa uma imagem JDK, GalataJ se conecta automaticamente sem nenhuma configuração adicional. Se seu contêiner usa um JRE ou um JDK sem suporte a conexão, você ainda pode perfilar usando a abordagem -javaagent. Veja Alternativa: Usando -javaagent abaixo.


GalataJ encontra processos Java executando em:

  • Docker Desktop (Windows/macOS)
  • Docker Engine (Linux)
  • Projetos Docker Compose

Enquanto o contêiner estiver executando na sua máquina local, GalataJ pode perfilá-lo.


Na lista de JVMs, contêineres Docker mostram:

  • Nome do contêiner — O nome que você deu ao contêiner
  • Nome da imagem — A imagem Docker sendo usada
  • ID do contêiner — ID curto para identificação

Se a conexão automática não funcionar — por exemplo, seu contêiner usa uma imagem JRE ou um JDK que não suporta conexão em tempo de execução — você pode carregar o agente do profiler na inicialização usando -javaagent. Este método funciona com qualquer imagem Java, incluindo JRE.

Escolha uma das seguintes opções:

Adicione o seguinte à definição do seu serviço — nenhuma alteração no Dockerfile necessária:

services:
my-app:
# ... sua configuração existente ...
volumes:
- ~/.galataj/agent/agent.jar:/opt/galataj-agent.jar:ro
environment:
- JAVA_TOOL_OPTIONS=-javaagent:/opt/galataj-agent.jar
- GALATAJ_PACKAGE=com.mycompany.myapp
extra_hosts:
- "host.docker.internal:host-gateway"

Depois reinicie seus serviços:

Terminal window
docker compose up

Copie o JAR do agente para o diretório do seu projeto:

Terminal window
cp ~/.galataj/agent/agent.jar ./agent.jar

Depois adicione estas linhas ao seu Dockerfile antes do ENTRYPOINT:

COPY agent.jar /opt/galataj-agent.jar
ENV JAVA_TOOL_OPTIONS="-javaagent:/opt/galataj-agent.jar"
ENV GALATAJ_PACKAGE=com.mycompany.myapp

Nenhuma alteração de arquivo necessária — passe a montagem de volume e variáveis de ambiente diretamente:

Terminal window
docker run \
-v ~/.galataj/agent/agent.jar:/opt/galataj-agent.jar:ro \
-e JAVA_TOOL_OPTIONS="-javaagent:/opt/galataj-agent.jar" \
-e GALATAJ_PACKAGE=com.mycompany.myapp \
--add-host=host.docker.internal:host-gateway \
your-image
  • Substitua com.mycompany.myapp pelo pacote base da sua aplicação (ex. o pacote que contém sua classe @SpringBootApplication).
  • No Linux, o parâmetro extra_hosts (Compose) ou --add-host (docker run) é necessário para que o contêiner possa alcançar o host. Os exemplos acima já incluem isso.
  • Ao usar o assistente do IDE, o snippet gerado já vem com o pacote correto preenchido.

Apenas Local

GalataJ só pode perfilar contêineres Docker executando na sua máquina local. Hosts Docker remotos (SSH, API Docker remota) não são suportados atualmente.


  1. Certifique-se de que o contêiner está executando (não parado)
  2. Clique em Atualizar no painel do profiler
  3. Verifique se o contêiner tem um processo Java dentro
  4. Execute Health Check para garantir que GalataJ está funcionando
  1. Certifique-se de ter uma licença Pro ativada
  2. Verifique se Docker está executando na sua máquina
  3. Tente reiniciar seu IDE

Falha no attach: jdk.attach não disponível

Se você vir erros como:

  • “jdk.attach module not available in container”
  • “The container image must include JDK (not just JRE)”
  • “NoClassDefFoundError: com/sun/tools/attach/AttachNotSupportedException”

o contêiner está usando uma imagem JRE ou um JDK sem suporte a conexão.

Solução A — Mudar para uma imagem JDK:

# Antes (falha para conexão automática)
FROM eclipse-temurin:17-jre
# Depois (funciona com GalataJ)
FROM eclipse-temurin:17-jdk

Imagens JDK recomendadas: eclipse-temurin:17-jdk, amazoncorretto:17, azul/zulu-openjdk:17.

Reconstrua a imagem e execute o contêiner novamente, então inicie o perfilamento.

Solução B — Usar -javaagent em vez disso:

Se você não pode mudar para uma imagem JDK, use a abordagem -javaagent que funciona com qualquer imagem Java, incluindo JRE. Veja Alternativa: Usando -javaagent acima.


Atualizar para Pro

Obtenha perfilamento Docker e mais

Atualizar →

Histórico de Sessões

Compare o desempenho do contêiner ao longo do tempo

Saiba mais →