Dockerfile运行可执行文件

时间:2017-09-28 09:27:08

标签: java docker dockerfile

我的目录中包含Dockerfile和JAR文件foo.jar

Dockerfile我写了以下内容:

FROM java:8
EXPOSE 8080
ENTRYPOINT ["java","-jar","foo.jar"]

我通过运行

成功构建了图像

docker build -t foo-example .

然后我尝试通过运行

来运行它

docker run -ti --rm -p 8080:8080 foo-example

我收到了这个错误:

Error: Unable to access jarfile foo.jar

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

您应该使用docker COPY或ADD命令。如下所述,COPY更受欢迎:https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/#add-or-copy

FROM java:8
EXPOSE 8080
COPY foo.jar ~/.
ENTRYPOINT ["java","-jar","foo.jar"]

答案 1 :(得分:3)

您需要在容器内提供foo.jar,例如将其复制到内部,并确保在执行时指定确切的位置。阅读有关ADD命令的docker文档。

基本上你需要在这些方面添加一些内容:

ADD foo.jar foo.jar

使用COPY是另一种选择:

COPY foo.jar ~/.