如何在 SupervisorD 中使用 -javaagent

How to use -javaagent in SupervisorD

我正在尝试从 Docker 运行 Supervisord,但是 运行ning Java 使用 -javaagent 参数时遇到问题。它给出以下错误

Error opening zip file or JAR manifest missing : /usr/apps/executor.jar

如果我简单地省略 -javaagent,它会以其他方式工作。

我尝试了以下选项,但仍然出现同样的错误

"-javaagent:/usr/apps/executor.jar" 
-javaagent:"/usr/apps/executor.jar" 

// Supervisor.conf

[supervisord]
nodaemon = true
user = root
loglevel = debug

[program:helloworld]
user = root
directory = /usr/apps
# this one will work
# command = /usr/bin/env java -jar /usr/apps/HelloWorld.jar 
# this one will NOT work
command = /usr/bin/env java -javaagent:"/usr/apps/executor.jar" -jar /usr/apps/HelloWorld.jar
# this one will NOT work
#command = /usr/bin/env java "-javaagent:/usr/apps/executor.jar" -jar /usr/apps/HelloWorld.jar
# this one will NOT work
#command = /usr/bin/env java -javaagent:/usr/apps/executor.jar -jar /usr/apps/HelloWorld.jar

// Docker文件

FROM openjdk:11
USER root
COPY ./HelloWorld.jar /usr/apps/HelloWorld.jar
CMD ["/usr/bin/supervisord","-n"]

感谢任何帮助使它正常工作...

(来自评论。)

Error opening zip file or JAR manifest missing : /usr/apps/executor.jar

表示文件不在容器中,因此无法读取。 (这可以通过 docker build -t myimage .docker run -it --rm myimage ls -la /usr/apps 等进行验证;如果 executor.jar 不存在,则它...不存在。)

您需要使用 ADDCOPY 命令确保文件确实存在于其中。