【发布时间】:2020-12-11 09:46:37
【问题描述】:
我正在尝试运行 java 代理。我创建容器的 docker 文件:
FROM ${my_repository}/open-jdk:1.8.0.262.b10-el_8-2020.09.15-1
ENV AGENT_HOME=/usr/local/agent
ENV AGENT_CONF="$AGENT_HOME/conf"
COPY jmx_javaagent.jar $AGENT_HOME
WORKDIR $DOMAIN_ROOT
ENTRYPOINT ["./start.sh"]
CMD []
并且启动脚本将jmx参数添加到jvm参数中。作为脚本中的摘要:
...
java -javaagent:${AGENT_HOME}/jmx_javaagent.jar=${AGENT_PORT}:${AGENT_CONF}/config.yaml \
-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=${JMX_REMOTE_PORT} \
当我在 kubernetes 上运行映像时,我得到:
Failed to find Premain-Class manifest attribute in /usr/local/agent/jmx_javaagent.jar
那么这里有什么问题呢?
【问题讨论】:
-
我正在使用prometheus代理,所以我只有jar文件。我没有 Manifest.MD
-
在没有 docker 和 kubernetes 的情况下是否可以工作? (又名本地)
-
我发现,当我反编译 jar 时,manifest.mf 中没有属性“Premain-Class”。取而代之的是 Main-Class 属性。所以这应该是问题所在。但我不知道如何解决这个问题。
-
java -javaagent:./jmx_prometheus_javaagent-0.14.0.jar=8080:config.yaml -jar yourJar.jar这不行吗?
标签: java docker kubernetes javaagents