无法从Dockerfile运行可执行文件

时间:2018-02-14 21:42:23

标签: java shell docker

我已尝试以各种方式运行以下命令:

shell形式:

CMD java -jar ImageTester.jar -ml LAYOUT -k $APIKEY -f ../screenshots -p $PROXY -s $URL

我收到以下错误:

/bin/sh: 1: java: not found

执行形式:

CMD [ "java", "-jar", "ImageTester.jar", "-ml LAYOUT -k $APIKEY -f ../screenshots -p $PROXY -s $URL" ]

我收到此错误:

container_linux.go:247: starting container process caused "exec: \"java\": executable file not found in $PATH"

我的Dockerfile:

FROM node:8
RUN node --version

RUN npm install
RUN npm i puppeteer

CMD [ "java", "-jar", "ImageTester.jar", "-ml LAYOUT -k $APIKEY -f ../screenshots -p $PROXY -s $URL" ]

正如您所料,这适用于我当地。我错过了什么?

1 个答案:

答案 0 :(得分:2)

您的Dockerfile应该具有从https://hub.docker.com/_/openjdk/获得的基本图像或等效的

或者你的Dockerfile需要安装java才能调用它... Java不是linux机器上标准命令的一部分。

你使用的节点不包含java但是nodejs是JavaScript :-)不一样......

通常,如果您希望节点应用程序在docker中调用java应用程序,最好使用节点应用程序创建节点映像,并使用java应用程序创建Java映像,并让它们相互通信。

查看本文的最佳做法https://docs.docker.com/v17.09/engine/userguide/eng-image/dockerfile_best-practices/