Docker Cloud自动构建 - 没有这样的文件或目录

时间:2018-01-25 11:07:08

标签: java maven dockerfile docker-cloud

运行基于Maven的项目构建,但它失败了。

当它试图找到jar时,原因是no such file or directory

Dockerfile:

FROM frolvlad/alpine-oraclejdk8:slim
FROM maven:3.5.2-jdk-8-slim
VOLUME /tmp
CMD ['mvn package']
ADD target/app-0.1.0-SNAPSHOT.jar app.jar <-- fails there
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

日志输出:

...
Removing intermediate container 60da937dde8a
Step 4/8 : CMD ['mvn package']
---> Running in 8ba364ba9d98
---> 4a722569d1a7
Removing intermediate container 8ba364ba9d98
Step 5/8 : ADD target/app-0.1.0-SNAPSHOT.jar app.jar
ADD failed: stat /var/lib/docker/tmp/docker-builder1534563/target/app-0.1.0-SNAPSHOT.jar: no such file or directory
ERROR: Build failed: ADD failed: stat /var/lib/docker/tmp/docker-builder1534563/target/app-0.1.0-SNAPSHOT.jar: no such file or directory
ERROR: Build failed with exit code 2

使用了不同的设置,但尽管应用名称与内置的jar匹配,但仍然无法正常工作。

如何解决问题?

1 个答案:

答案 0 :(得分:2)

这个问题IMO与Spring Boot无关,而且它与Docker有关。 一般情况下,请分享有关您运行docker build命令的准确程度的更多信息,您的Dockerfile所在的目录和位置。如果没有这些信息,我们只能推测并提供通用答案:

提供一些要考虑的要点:Docker对项目的Maven结构一无所知,因此您可以保持以下布局:

 <some_dir>
  |____ Dockerfile
  |____ app-0.1.0-SNAPSHOT.jar

然后你可以从这个目录运行docker build命令,这应该可行。然后,您可以尝试使用target目录,一旦您了解它的工作原理以及何时不能继续使用当前文件夹布局,通过此练习您很快就能找到答案。< / p>