1

运行基于 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 匹配,但它仍然无法正常工作。

如何解决问题?

4

1 回答 1

2

这个问题IMO与Spring Boot无关,与Docker有关。一般而言,请分享有关您如何准确运行docker build命令、从哪个目录以及您的Dockerfile确切驻留位置的更多信息。如果没有这些信息,我们只能推测并提供通用答案:

提供几点考虑: Docker 对项目的 Maven 结构一无所知,因此您只需维护以下布局:

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

然后你可以从这个目录运行 docker build 命令,这应该可以工作。然后,您可以尝试使用target目录,一旦您了解它何时工作以及何时不继续您当前的文件夹布局,通过这种做法您将很快找到答案的机会。

于 2018-01-25T11:24:55.327 回答