Dockerfile运行可执行文件

我有一个目录,其中包含一个Dockerfile和一个JAR文件foo.jar

Dockerfile我写了以下内容:

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

我通过运行成功地build立了图像

docker build -t foo-example .

然后我尝试通过运行来运行它

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

我得到这个错误:

Error: Unable to access jarfile foo.jar

有任何想法吗?

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

基本上你需要添加一些东西:

 ADD foo.jar foo.jar 

使用COPY是另一种select:

 COPY foo.jar ~/. 

您应该使用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"]