如何解决将YourKit -agentpath传递到Docker ENTRYPOINT

时间:2019-07-26 10:03:47

标签: docker deployment

我正在为docker部署模块设置YourKit Profiler,这些模块已部署在linux服务器中。

我尝试在ENTRYPOINT期间传递-agentpath变量。我正在使用yourkit建议的特定于docker的docker yourkit版本。

Docker运行 docker run -d -p 1234:9080 -p 10001:10001 --name appName

Docker入口点 ENTRYPOINT java -agentpath:./YourKit-JavaProfiler-2019.1-docker/bin/linux-x86-64/libyjpagent.so=port=10001,listen=all -Xms256M -Xmx2048M -Djava.net.preferIPv4Stack=true -Dspring.config.location=/configPath/appName.properties -jar /ngcdeploy/appName.war

我希望Docker容器使用提供的端口10001启动并发布yourkit配置文件。

但是,实际结果是,如果我使用该容器,则容器没有装上 -agentpath:./YourKit-JavaProfiler-2019.1-docker/bin/linux-x86-64/libyjpagent.so=port=10001,listen=all 没有以上配置,容器将启动模块。

如何在Docker入口点中配置或设置-agentpath:

2 个答案:

答案 0 :(得分:0)

我怀疑yourkit配置文件不存在于容器中。

请按照以下步骤操作。

您需要在dockerfile

中添加这些行
RUN wget https://www.yourkit.com/download/docker/YourKit-JavaProfiler-2019.1-docker.zip -P /tmp/ && \
  unzip /tmp/YourKit-JavaProfiler-2019.1-docker.zip -d /usr/local && \
  rm /tmp/YourKit-JavaProfiler-2019.1-docker.zip

# In case of alpine container add this
RUN apk add --no-cache libc6-compat

ENTRYPOINT java -agentpath:/usr/local/YourKit-JavaProfiler-2019.1/bin/linux-x86-64/libyjpagent.so=port=10001,listen=all -jar my-app.jar

构建并运行docker容器

$ docker build -t myapp:v1
$ docker run -d -p 1234:9080 -p 10001:10001 --name appName myapp:v1

更多信息here

希望这会有所帮助。

答案 1 :(得分:0)

我可以通过将YourKit放入docker容器并配置YourKit-JavaProfiler-2019.1-docker

在docker中配置-agentpath: