gpt4 book ai didi

java - 无法从 docker 容器运行我的 Java 8 应用程序

转载 作者:行者123 更新时间:2023-12-01 18:42:48 25 4
gpt4 key购买 nike

我可以从 bash shell 使用此命令正确启动此 Java 8 应用程序:

java -cp "simple-queue-0.1-SNAPSHOT.jar:jms-1.1.jar:commons-logging-1.2.jar:activemq-all-5.13.3.jar" 
-Dserver1="my1.domain.com"
-Dserver2="my2.domain.com"
-Dusername="user"
-Dpassword="passwd"
com.fusesource.activemq.exercises.simple.queue.SimpleProducer

我想容器化这个应用程序,所以这是我的 Dockerfile:

FROM store/oracle/serverjre:8
MAINTAINER <me@myco.com>

EXPOSE 4567

VOLUME /data

COPY build/libs/*.jar /usr/local/bin/
COPY /app/simple-queue-0.1-SNAPSHOT.jar /usr/local/bin/

CMD ["java", "-cp", "/usr/local/bin/simple-queue-0.1-SNAPSHOT.jar:/usr/local/bin/jms-1.1.jar:/usr/local/bin/commons-logging-1.2.jar:/usr/local/bin/activemq-all-5.13.3.jar", "-Dserver1=$SERVER1", -Dserver2="$SERVER2", -Dusername="$USER", -Dpassword="$PASSWORD"]

我像这样启动我的容器:

docker run -it --rm -e SERVER1=my1.domain.com -e SERVER2=my2.domain.com -e USER=user -e PASSWORD=passwd ecosystem/simple-queue-client:1.1 com.fusesource.activemq.exercises.simple.queue.SimpleProducer

我收到此错误消息:

docker: Error response from daemon: OCI runtime create failed: container_linux.go:346: starting container process caused "exec: \"com.fusesource.activemq.exercises.simple.queue.SimpleProducer\": executable file not found in $PATH": unknown.

当我进入该容器时,我可以看到我的 jar 文件实际上位于 PATH 中的/usr/local/bin 目录中。容器中的CLASSPATH为空...

我需要做什么来解决这个问题?

最佳答案

我使用了上面 midelb 提供的链接中的信息,最终得到了两个容器:一个用于 SimpleProducer,另一个用于 SimpleReceiver。

这是一个 Docker 文件:

FROM store/oracle/serverjre:8
MAINTAINER <james.depaul@maxar.com>

VOLUME /data

COPY build/libs/*.jar /usr/local/bin/
COPY /app/simple-queue-0.1-SNAPSHOT.jar /usr/local/bin/

ENTRYPOINT java -classpath /usr/local/bin/simple-queue-0.1-SNAPSHOT.jar:/usr/local/bin/jms-1.1.jar:/usr/local/bin/commons-logging-1.2.jar:/usr/local/bin/activemq-all-5.13.3.jar -Dserver1=$SERVER1 -Dserver2=$SERVER2 -Dusername=$USER -Dpassword=$PASSWORD com.fusesource.activemq.exercises.simple.queue.SimpleConsumer

构建

docker build -t mysystem/simple-client-consumer:1.0

我现在这样调用它:

docker run -d --rm -e SERVER1=server-b0.domain.com -e SERVER2=server-b1.domain.com -e USER=user -e PASSWORD=passwd mysystem/simple-client-consumer:1.0 

关于java - 无法从 docker 容器运行我的 Java 8 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59888832/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com