我试图运行我的jar时得到Error: Unable to access jarfile jar-runner.jar
。
Dockerfile:
FROM anapsix/alpine-java
MAINTAINER bramhaag
CMD ["java", "-jar", "jar-runner.jar", "some param", "some param"]
jar文件位于/ home / selfbot /,我用Portainer运行它。 这就是我的Portainer容器的样子:
我将如何使这项工作?
答案 0 :(得分:0)
看起来您已安装了卷,因此假设您通过该卷在容器中提供了jar文件是正确的,您可能只需要指定它的路径,以便java可以找到它。
chain "abcd"
您可以通过运行其他命令来检查文件是否真的可用,只显示给定目录的内容。将命令(在Portainer中)更改为
CMD ["java", "-jar", "/home/selfbot/jar-runner.jar", "some param", "some param"]
然后你可以验证jar文件是否真的在你认为的位置,它是否可读等。这个命令会立即退出,但它的输出将在容器日志中提供。
答案 1 :(得分:0)
尝试(wall_bottom_edge - wall_top_edge ) > 1
我的帖子中有类似的问题:Error: Unable to access jarfile when running docker container
答案 2 :(得分:0)
使用CMD [ ]
“ exec”格式,Docker将尝试查看参数并给出其使用价值的意见。 “无法访问jarfile”是Docker消息,它仅表示Docker的jarfile存在一些(未指定)问题。例如,当jarfile的名称包含一个ENV
变量时,我就遇到了它。显然,Docker无法处理。
还有CMD
“外壳”格式CMD java -jar jar-runner.jar "some param" "some param"
。这被称为外壳格式,因为Docker会将/bin/sh -c
的参数传递给他们。结果,它不会试图对参数的含义进行猜测。 sh
也不会尝试变得聪明。并且java
完全可以使用jar-runner.jar
。
请记住,如果您在jar-runner.jar
中有错字,或者将错字放在错误的位置,那么Docker的信息可能是正确的。当Docker猜错时,shell解决方法很有用。