Java 我更改了我的Dockerfile,但是;“docker build”;isn';这不能反映变化

Java 我更改了我的Dockerfile,但是;“docker build”;isn';这不能反映变化,java,spring-boot,docker,maven,dockerfile,Java,Spring Boot,Docker,Maven,Dockerfile,我正在学习如何使用docker,这个docker映像是用一个完全本地运行的Spring Boot REST API构建的 我的第一张docker图片如下所示 FROM amazoncorretto:11-alpine-jdk as build WORKDIR /workspace/app COPY mvnw . COPY .mvn .mvn COPY pom.xml . COPY src src RUN ./mvnw install -DskipTests RUN mkdir -p targ

我正在学习如何使用docker,这个docker映像是用一个完全本地运行的Spring Boot REST API构建的

我的第一张docker图片如下所示

FROM amazoncorretto:11-alpine-jdk as build
WORKDIR /workspace/app

COPY mvnw .
COPY .mvn .mvn
COPY pom.xml .
COPY src src

RUN ./mvnw install -DskipTests
RUN mkdir -p target/dependency && (cd target/dependency; jar -xf ../*.jar)

FROM amazoncorretto:11-alpine-jdk
RUN addgroup -S spring && adduser -S spring -G spring
USER spring:spring
ARG DEPENDENCY=target/dependency
COPY ${DEPENDENCY}/BOOT-INF/lib /app/lib
COPY ${DEPENDENCY}/META-INF /app/META-INF
COPY ${DEPENDENCY}/BOOT-INF/classes /app
ENTRYPOINT ["java","-cp","app:app/lib/*","com.helloyou.demo.DemoApplication"]
当我第一次运行命令
docker build-t myapp.
时,我得到了这个结果

jamal@DESKTOP-64JJ5P8:~/dev/hello-you-endpoint$ docker build -t fer2ap/app .
[+] Building 7.5s (9/9) FINISHED
 => [internal] load build definition from Dockerfile                                                                                2.2s
 => => transferring dockerfile: 38B                                                                                                 0.0s
 => [internal] load .dockerignore                                                                                                   3.1s
 => => transferring context: 2B                                                                                                     0.0s
 => [internal] load metadata for docker.io/library/amazoncorretto:11-alpine-jdk                                                     1.9s
 => [stage-1 1/5] FROM docker.io/library/amazoncorretto:11-alpine-jdk@sha256:76acd2ab267cb71abeab875af97d91fb483d81bc4e372d1dd28ba  0.0s
 => [internal] load build context                                                                                                   1.4s
 => => transferring context: 2B                                                                                                     0.0s
 => CACHED [stage-1 2/5] RUN addgroup -S spring && adduser -S spring -G spring                                                      0.0s
 => ERROR [stage-1 3/5] COPY /workspace/app/target/dependency/BOOT-INF/lib /app/lib                                                 0.0s
 => ERROR [stage-1 4/5] COPY /workspace/app/target/dependency/META-INF /app/META-INF                                                0.0s
 => ERROR [stage-1 5/5] COPY /workspace/app/target/dependency/BOOT-INF/classes /app                                                 0.0s
------
 > [stage-1 3/5] COPY /workspace/app/target/dependency/BOOT-INF/lib /app/lib:
------
------
 > [stage-1 4/5] COPY /workspace/app/target/dependency/META-INF /app/META-INF:
------
------
 > [stage-1 5/5] COPY /workspace/app/target/dependency/BOOT-INF/classes /app:
------
failed to compute cache key: "/workspace/app/target/dependency/BOOT-INF/classes" not found: not found
起初我认为这是
WORKDIR
ARG依赖项上的一个错误。所以我对它进行了更改,以匹配我的项目的绝对路径
~/dev/hello you endpoint
。更改后的Dockerfile是这样的

FROM amazoncorretto:11-alpine-jdk as build
WORKDIR dev/hello-you-endpoint
COPY mvnw .
COPY .mvn .mvn
COPY pom.xml .
COPY src src
RUN ./mvnw install
RUN mkdir -p target/dependency && (cd target/dependency; jar -xf ../*.jar)
FROM amazoncorretto:11-alpine-jdk
VOLUME /tmp
RUN addgroup -S spring && adduser -S spring -G spring
USER spring:spring
ARG DEPENDENCY=dev/hello-you-endpoint/target/dependency
COPY ${DEPENDENCY}/BOOT-INF/lib /app/lib
COPY ${DEPENDENCY}/META-INF /app/META-INF
COPY ${DEPENDENCY}/BOOT-INF/classes /app
ENTRYPOINT ["java","-cp","app:app/lib/*","com.helloyou.demo.DemoApplication"]
当我运行docker build-t myapp时。
我得到了相同的输出
计算缓存键失败:“/workspace/app/target/dependency/BOOT-INF/lib”not found:not found

jamal@DESKTOP-64JJ5P8:~/dev/hello-you-endpoint$ docker build -t fer2ap/app .
[+] Building 8.6s (10/10) FINISHED
 => [internal] load build definition from Dockerfile                                                                                3.3s
 => => transferring dockerfile: 38B                                                                                                 0.0s
 => [internal] load .dockerignore                                                                                                   2.1s
 => => transferring context: 2B                                                                                                     0.0s
 => [internal] load metadata for docker.io/library/amazoncorretto:11-alpine-jdk                                                     3.2s
 => [auth] library/amazoncorretto:pull token for registry-1.docker.io                                                               0.0s
 => [internal] load build context                                                                                                   1.4s
 => => transferring context: 2B                                                                                                     0.0s
 => [stage-1 1/5] FROM docker.io/library/amazoncorretto:11-alpine-jdk@sha256:76acd2ab267cb71abeab875af97d91fb483d81bc4e372d1dd28ba  0.0s
 => CACHED [stage-1 2/5] RUN addgroup -S spring && adduser -S spring -G spring                                                      0.0s
 => ERROR [stage-1 3/5] COPY /workspace/app/target/dependency/BOOT-INF/lib /app/lib                                                 0.0s
 => ERROR [stage-1 4/5] COPY /workspace/app/target/dependency/META-INF /app/META-INF                                                0.0s
 => ERROR [stage-1 5/5] COPY /workspace/app/target/dependency/BOOT-INF/classes /app                                                 0.0s
------
 > [stage-1 3/5] COPY /workspace/app/target/dependency/BOOT-INF/lib /app/lib:
------
------
 > [stage-1 4/5] COPY /workspace/app/target/dependency/META-INF /app/META-INF:
------
------
 > [stage-1 5/5] COPY /workspace/app/target/dependency/BOOT-INF/classes /app:
------
failed to compute cache key: "/workspace/app/target/dependency/BOOT-INF/lib" not found: not found
FROM amazoncorretto:11-alpine-jdk
RUN addgroup -S spring && adduser -S spring -G spring
USER spring:spring
ARG DEPENDENCY=target/dependency
COPY ${DEPENDENCY}/BOOT-INF/lib /app/lib
COPY ${DEPENDENCY}/META-INF /app/META-INF
COPY ${DEPENDENCY}/BOOT-INF/classes /app
ENTRYPOINT ["java","-cp","app:app/lib/*","com.helloyou.demo.DemoApplication"] 
我觉得收到同样的错误很奇怪,所以我一直试图找出问题所在。我删除了Dockerfile中的所有内容,并得到了相同的错误
计算缓存密钥失败:“/workspace/app/target/dependency/BOOT-INF/classes”not found:not found

jamal@DESKTOP-64JJ5P8:~/dev/hello-you-endpoint$ docker build -t fer2ap/app .
[+] Building 8.6s (10/10) FINISHED
 => [internal] load build definition from Dockerfile                                                                                3.3s
 => => transferring dockerfile: 38B                                                                                                 0.0s
 => [internal] load .dockerignore                                                                                                   2.1s
 => => transferring context: 2B                                                                                                     0.0s
 => [internal] load metadata for docker.io/library/amazoncorretto:11-alpine-jdk                                                     3.2s
 => [auth] library/amazoncorretto:pull token for registry-1.docker.io                                                               0.0s
 => [internal] load build context                                                                                                   1.4s
 => => transferring context: 2B                                                                                                     0.0s
 => [stage-1 1/5] FROM docker.io/library/amazoncorretto:11-alpine-jdk@sha256:76acd2ab267cb71abeab875af97d91fb483d81bc4e372d1dd28ba  0.0s
 => CACHED [stage-1 2/5] RUN addgroup -S spring && adduser -S spring -G spring                                                      0.0s
 => ERROR [stage-1 3/5] COPY /workspace/app/target/dependency/BOOT-INF/lib /app/lib                                                 0.0s
 => ERROR [stage-1 4/5] COPY /workspace/app/target/dependency/META-INF /app/META-INF                                                0.0s
 => ERROR [stage-1 5/5] COPY /workspace/app/target/dependency/BOOT-INF/classes /app                                                 0.0s
------
 > [stage-1 3/5] COPY /workspace/app/target/dependency/BOOT-INF/lib /app/lib:
------
------
 > [stage-1 4/5] COPY /workspace/app/target/dependency/META-INF /app/META-INF:
------
------
 > [stage-1 5/5] COPY /workspace/app/target/dependency/BOOT-INF/classes /app:
------
failed to compute cache key: "/workspace/app/target/dependency/BOOT-INF/lib" not found: not found
FROM amazoncorretto:11-alpine-jdk
RUN addgroup -S spring && adduser -S spring -G spring
USER spring:spring
ARG DEPENDENCY=target/dependency
COPY ${DEPENDENCY}/BOOT-INF/lib /app/lib
COPY ${DEPENDENCY}/META-INF /app/META-INF
COPY ${DEPENDENCY}/BOOT-INF/classes /app
ENTRYPOINT ["java","-cp","app:app/lib/*","com.helloyou.demo.DemoApplication"] 
在写这个问题之前,我发现了一些类似的案例(),但它们的解决方案都不适合我。我做了一些研究,了解了一点docker缓存,但是
docker build——no cache-t myapp.
也不起作用

在尝试使用多层支持构建映像之前,我使用docker教程()完成了第一次spring引导。在入门教程结束时,我有了以下Dockerfile。我试图用它构建我的映像,但它现在也不起作用,当使用此Dockerfile时,我得到与上面相同的错误
计算缓存密钥失败:“/workspace/app/target/dependency/BOOT-INF/lib”not found:not found

jamal@DESKTOP-64JJ5P8:~/dev/hello-you-endpoint$ docker build -t fer2ap/app .
[+] Building 8.6s (10/10) FINISHED
 => [internal] load build definition from Dockerfile                                                                                3.3s
 => => transferring dockerfile: 38B                                                                                                 0.0s
 => [internal] load .dockerignore                                                                                                   2.1s
 => => transferring context: 2B                                                                                                     0.0s
 => [internal] load metadata for docker.io/library/amazoncorretto:11-alpine-jdk                                                     3.2s
 => [auth] library/amazoncorretto:pull token for registry-1.docker.io                                                               0.0s
 => [internal] load build context                                                                                                   1.4s
 => => transferring context: 2B                                                                                                     0.0s
 => [stage-1 1/5] FROM docker.io/library/amazoncorretto:11-alpine-jdk@sha256:76acd2ab267cb71abeab875af97d91fb483d81bc4e372d1dd28ba  0.0s
 => CACHED [stage-1 2/5] RUN addgroup -S spring && adduser -S spring -G spring                                                      0.0s
 => ERROR [stage-1 3/5] COPY /workspace/app/target/dependency/BOOT-INF/lib /app/lib                                                 0.0s
 => ERROR [stage-1 4/5] COPY /workspace/app/target/dependency/META-INF /app/META-INF                                                0.0s
 => ERROR [stage-1 5/5] COPY /workspace/app/target/dependency/BOOT-INF/classes /app                                                 0.0s
------
 > [stage-1 3/5] COPY /workspace/app/target/dependency/BOOT-INF/lib /app/lib:
------
------
 > [stage-1 4/5] COPY /workspace/app/target/dependency/META-INF /app/META-INF:
------
------
 > [stage-1 5/5] COPY /workspace/app/target/dependency/BOOT-INF/classes /app:
------
failed to compute cache key: "/workspace/app/target/dependency/BOOT-INF/lib" not found: not found
FROM amazoncorretto:11-alpine-jdk
RUN addgroup -S spring && adduser -S spring -G spring
USER spring:spring
ARG DEPENDENCY=target/dependency
COPY ${DEPENDENCY}/BOOT-INF/lib /app/lib
COPY ${DEPENDENCY}/META-INF /app/META-INF
COPY ${DEPENDENCY}/BOOT-INF/classes /app
ENTRYPOINT ["java","-cp","app:app/lib/*","com.helloyou.demo.DemoApplication"] 

文件结构:我的Dockerfile、mvnw、pom.xml和我的应用程序的源文件夹位于/home/jamal/dev/hello you endpoint/

您可以像本例一样构建Dockerfile

FROM golang AS build-stage
RUN go get -u github.com/LK4D4/vndr

FROM scratch AS export-stage
COPY --from=build-stage /go/bin/vndr /

您必须从构建映像中复制内容
${DEPENDENCY}
只是最终图像中的一个参数,与生成中的
目标/依赖项
无关。@QuangNguyen但是为什么命令
docker build…
即使我删除了它的所有内容,仍然运行?我添加了“AS build stage”和“AS export stage”,删除了WORKDIR并添加了“-from=build stage”复制命令。但是我得到了同样的错误
计算缓存密钥失败:“/workspace/app/target/dependency/BOOT-INF/lib”not found:not found
。晚上我明白了你想说的话。我在这里更改了Dockerfile,它正在工作。我仍然相信,除了正确地编写Dockerfile之外,还有另一个bug