运行基于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匹配,但仍然无法正常工作。
如何解决问题?
答案 0 :(得分:2)
这个问题IMO与Spring Boot无关,而且它与Docker有关。
一般情况下,请分享有关您运行docker build
命令的准确程度的更多信息,您的Dockerfile
所在的目录和位置。如果没有这些信息,我们只能推测并提供通用答案:
提供一些要考虑的要点:Docker对项目的Maven结构一无所知,因此您可以保持以下布局:
<some_dir>
|____ Dockerfile
|____ app-0.1.0-SNAPSHOT.jar
然后你可以从这个目录运行docker build命令,这应该可行。然后,您可以尝试使用target
目录,一旦您了解它的工作原理以及何时不能继续使用当前文件夹布局,通过此练习您很快就能找到答案。< / p>