我使用Elastic APM Agent监视我的jar,我手动运行以下命令:
java -javaagent:../infrastructure/agent/apm-agent.jar
-Delastic.apm.service_name=server
-Delastic.apm.server_urls=http://${APM_HOST}:8200
-Delastic.apm.application_packages=package.coù
-jar ./target/server-0.0.1-SNAPSHOT.jar &
现在,我想使用docker运行来传递这些参数,我创建了图像,并尝试使用此命令来传递这些设置,但应用程序没有启动
docker run --name app -e CATALINA_OPTS='-Dspring.config.location=/usr/local/tomcat/application-recette.properties,/usr/local/tomcat/application.yml'
-e CATALINA_OPTS='-Delastic.apm.service_name=server'
-e CATALINA_OPTS='-Delastic.apm.server_urls=http://10.128.0.4:8200'
-e CATALINA_OPTS='-Delastic.apm.application_packages=package.com'
-d -p 9000:8080 image:v1
有解决这个问题的办法吗?
感谢
实际上,根据你如何设置和配置ELK堆栈,你的应用程序没有启动有很多原因,但对我来说,我做了以下几点,它运行得很好:
- 通过Dockerfile发送application.jar和apm-agent.jar,并在容器中运行它们:
FROM openjdk:8-jre-alpine
COPY javaProjects/test-apm/target/test-apm-0.0.1-SNAPSHOT.jar /app.jar
COPY elastic-apm-agent-1.19.0.jar /apm-agent.jar
CMD ["/usr/bin/java","-javaagent:/apm-agent.jar", "-Delastic.apm.service_name=my-cool-service -Delastic.apm.application_packages=main.java -Delastic.apm.server_urls=http://localhost:8200","-jar", "/app.jar"]
-
从此Dockerfile:创建图像
docker build -t test-apm:latest ./
-
运行创建的图像:
docker run --network host -p 8080:8080 test-apm:latest
- 注意我的apm服务器和ELK堆栈正在我的主机上运行,我认为,如果你也这样做,对你的环境做一些小的改变,它应该会很好地工作