运行基于 Maven 的项目构建,但失败了。
原因是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 名称匹配,但它仍然不起作用。
如何解决问题?
这个问题IMO与Spring Boot无关,它与Docker有关。通常,请分享有关您如何运行docker build
命令、从哪个目录以及您的Dockerfile
确切驻留位置的更多信息。没有这些信息,我们只能推测并提供通用答案:
提供一些注意事项:Docker 对项目的 Maven 结构一无所知,因此您可以保持以下布局:
<some_dir>
|____ Dockerfile
|____ app-0.1.0-SNAPSHOT.jar
然后你可以从这个目录运行 docker build 命令,这应该可以工作。然后,您可以尝试使用target
目录,一旦您了解它何时有效以及何时不继续当前文件夹布局,那么通过这种做法,您很可能会很快找到答案。