Profilage Docker
Fonctionnalité Pro
Le profilage Docker nécessite une licence Pro.
Profilez des applications Java s’exécutant dans des conteneurs Docker locaux avec découverte automatique.
Comment ça Fonctionne
Section intitulée « Comment ça Fonctionne »GalataJ découvre automatiquement les applications Java s’exécutant dans des conteneurs Docker sur votre machine locale.
- Démarrez votre conteneur Docker avec une application Java
- Ouvrez le panneau Profiler dans votre IDE
- Cliquez sur Actualiser — Les conteneurs Docker apparaissent dans la liste des JVMs
- Sélectionnez le conteneur et démarrez le profilage
Aucune configuration nécessaire. GalataJ gère la connexion automatiquement.
JDK recommandé pour l'attachement automatique
Si votre conteneur utilise une image JDK, GalataJ s’attache automatiquement sans aucune configuration supplémentaire. Si votre conteneur utilise un JRE ou un JDK sans support d’attachement, vous pouvez toujours profiler en utilisant l’approche -javaagent. Voir Alternative : Utiliser -javaagent ci-dessous.
Ce qui est Découvert
Section intitulée « Ce qui est Découvert »GalataJ trouve les processus Java s’exécutant dans :
- Docker Desktop (Windows/macOS)
- Docker Engine (Linux)
- Projets Docker Compose
Tant que le conteneur s’exécute sur votre machine locale, GalataJ peut le profiler.
Identifier les Conteneurs
Section intitulée « Identifier les Conteneurs »Dans la liste des JVMs, les conteneurs Docker affichent :
- Nom du conteneur — Le nom que vous avez donné au conteneur
- Nom de l’image — L’image Docker utilisée
- ID du conteneur — ID court pour l’identification
Alternative : Utiliser -javaagent
Section intitulée « Alternative : Utiliser -javaagent »Si l’attachement automatique ne fonctionne pas — par exemple, votre conteneur utilise une image JRE ou un JDK qui ne supporte pas l’attachement à l’exécution — vous pouvez charger l’agent du profiler au démarrage avec -javaagent. Cette méthode fonctionne avec n’importe quelle image Java, y compris JRE.
Choisissez l’une des options suivantes :
Option 1 : docker-compose.yml
Section intitulée « Option 1 : docker-compose.yml »Ajoutez ce qui suit à la définition de votre service — aucune modification du Dockerfile nécessaire :
services: my-app: # ... votre configuration existante ... 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"Puis redémarrez vos services :
docker compose upOption 2 : Dockerfile
Section intitulée « Option 2 : Dockerfile »Copiez le JAR de l’agent dans votre répertoire de projet :
cp ~/.galataj/agent/agent.jar ./agent.jarPuis ajoutez ces lignes à votre Dockerfile avant le ENTRYPOINT :
COPY agent.jar /opt/galataj-agent.jarENV JAVA_TOOL_OPTIONS="-javaagent:/opt/galataj-agent.jar"ENV GALATAJ_PACKAGE=com.mycompany.myappOption 3 : docker run
Section intitulée « Option 3 : docker run »Aucune modification de fichier nécessaire — passez le montage de volume et les variables d’environnement directement :
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-imageNotes Importantes
Section intitulée « Notes Importantes »- Remplacez
com.mycompany.myapppar le package de base de votre application (ex. le package contenant votre classe@SpringBootApplication). - Sur Linux, le paramètre
extra_hosts(Compose) ou--add-host(docker run) est requis pour que le conteneur puisse atteindre l’hôte. Les exemples ci-dessus l’incluent déjà. - Lorsque vous utilisez l’assistant IDE, le snippet généré contient déjà le bon package.
Limitations
Section intitulée « Limitations »Local Uniquement
GalataJ ne peut profiler que les conteneurs Docker s’exécutant sur votre machine locale. Les hôtes Docker distants (SSH, API Docker distante) ne sont pas actuellement supportés.
Dépannage
Section intitulée « Dépannage »Le conteneur n’apparaît pas
Section intitulée « Le conteneur n’apparaît pas »- Assurez-vous que le conteneur est en cours d’exécution (pas arrêté)
- Cliquez sur Actualiser dans le panneau du profiler
- Vérifiez que le conteneur contient un processus Java
- Exécutez Health Check pour vous assurer que GalataJ fonctionne
Le profilage ne démarre pas
Section intitulée « Le profilage ne démarre pas »- Assurez-vous d’avoir une licence Pro activée
- Vérifiez que Docker s’exécute sur votre machine
- Essayez de redémarrer votre IDE
Échec de l’attachement : jdk.attach non disponible
Si vous voyez des erreurs comme :
- “jdk.attach module not available in container”
- “The container image must include JDK (not just JRE)”
- “NoClassDefFoundError: com/sun/tools/attach/AttachNotSupportedException”
le conteneur utilise une image JRE ou un JDK sans support d’attachement.
Solution A — Passer à une image JDK :
# Avant (échoue pour l'attachement automatique)FROM eclipse-temurin:17-jre
# Après (fonctionne avec GalataJ)FROM eclipse-temurin:17-jdkImages JDK recommandées : eclipse-temurin:17-jdk, amazoncorretto:17, azul/zulu-openjdk:17.
Reconstruisez l’image et relancez le conteneur, puis démarrez le profilage.
Solution B — Utiliser -javaagent à la place :
Si vous ne pouvez pas passer à une image JDK, utilisez l’approche -javaagent qui fonctionne avec n’importe quelle image Java, y compris JRE. Voir Alternative : Utiliser -javaagent ci-dessus.