Я пытаюсь интегрировать javaagent для мониторинга приложений. Я использую докер и настроил базовый образ OpenJDK, который наследуется другими образами приложений.
Поскольку javaagent требует путь к файлу jar, в целях обслуживания я определил путь в базовом образе как другую переменную env (AGENT_PATH
), и я хочу повторно использовать одну и ту же переменную env во всех изображениях моего приложения. По какой-то причине переменная среды не выбрана, и контейнер приложения завершается с ошибкой.
Dockerfile базового изображения
AGENT_PATH=/agent/agent.jar
Вот как я настроил JAVA_TOOL_OPTIONS
в Dockerfile приложения.
JAVA_TOOL_OPTIONS="-javaagent:$AGENT_PATH + other JVM options"
Это сообщение об ошибке
Picked up JAVA_TOOL_OPTIONS: -javaagent:$AGENT_PATH
Error opening zip file or JAR manifest missing : $AGENT_PATH
Error occurred during initialization of VM
agent library failed to init: instrument
Почему AGENT_PATH
не подставляется должным образом?
Я ознакомился с реализацией Hotspot для понимания. Я нашел это .