尝试在多阶段Docker构建中复制jar文件时找不到我的jar文件

时间:2019-10-07 19:50:09

标签: java spring-boot docker gradle dockerfile

所以我对Docker来说还很陌生,我一直在尝试对我的spring-boot应用程序进行dockerise。我设法使其与给定的JAR文件一起使用,但现在我想进行多阶段构建以使用gradle构建JAR文件,这样我就不必在运行images = new List<CardImage>()之前手动生成JAR。

这是我当前的设置。它无法找到jar文件,而且我不知道如何导航文件系统来找到它(除了在dockerfile中运行shell命令以打印出文件和文件夹之外)

DOCKERFILE

docker build {app-name}

Console Output

FROM gradle:jdk8 as build

COPY --chown:gradle:gradle . /home/gradle/src

WROKDIR /home/gradle/src 

RUN gradle clean build --parallel

FROM  openjdk:8-alpine

WORKDIR /usr/app

COPY --from=build /home/gradle/src/app-name.jar /usr/app/

RUN sh -c 'touch app-name.jar'

ENTRYPOINT ["java", "-jar", "app-name.jar"]

1 个答案:

答案 0 :(得分:1)

s@/foo/bar@/baz/qux@指令需要从gradle的COPY目录中复制,该目录是构建工件的默认位置-因为它表示要在项目根目录中查找JAR。这应该起作用:

build/libs/

这假定Dockerfile位于项目的根目录中。如果不是,那么您需要相应地调整dockerfile中使用的复制路径。