我正在为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:
答案 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
-agentpath: