[英]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.