繁体   English   中英

如何使用两个jar文件构建Dockerfile

[英]How to build Dockerfile with two jar files

我从Docker开始,我有点迷路了。

我有两个java文件,两个带有测试数据的zip文件和两个配置文件的java实验。 我正在尝试在Docker上运行此exp。

如果要在PC上运行此exp,则有两个阶段。

阶段1:

java -classpath library.jar;alg.jar library.utl.App.class in.cf

最后一个参数是配置,在此之后,我将生成生成的文件alg1.bin

阶段2:

java -classpath library.jar;alg.jar library.utl.App.class ot.cf

我正在使用文件alg1.bin的地方 ,这是主要测试。

我在第1阶段使用Dockerfile:

FROM java:7

ADD java-exp /usr/local/

CMD ["java", "-classpath",
"/usr/local/library.jar;/usr/local/alg.jar",
"/usr/local/library.utl.App.class", "/usr/local/in.cf"]

这是我成功建立的,但是当我尝试时

docker run java-exp

我收到一个错误:

错误:找不到或加载主类.usr.local.library.utl.App.class。

谁能帮我解决这个问题?

以更好的方式,帮助我将两个阶段合并到一个Dockerfile中吗? 谢谢。

尝试

FROM java:7

ADD java-exp /usr/local/

WORKDIR /usr/local/

CMD ["java", "-classpath","library.jar;alg.jar","library.utl.App.class","in.cf"]

我想我解决了。 主要错误在于CMD

正确的事情是:

CMD ["java", "-classpath",
"/usr/local/library.jar:/usr/local/alg.jar",
"/usr/local/library.utl.App", "/usr/local/in.cf"]

代替:

CMD ["java", "-classpath",
"/usr/local/library.jar;/usr/local/alg.jar",
"/usr/local/library.utl.App.class", "/usr/local/in.cf"]

两个小错误:,; 和.class

感谢帮助。

您可以尝试以下

CMD ["java", "-cp", "/usr/local/library/*", "/usr/local/library.utl.App.class", "/usr/local/in.cf"]

如果像这样使用ENTRYPOINT会更好:

ENTRYPOINT ["/usr/local/java-exp/entrypoint.sh"]

然后在您的entrypoint.sh

#!/bin/bash
java -classpath library.jar;alg.jar library.utl.App.class in.cf
java -classpath library.jar;alg.jar library.utl.App.class ot.cf

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM