【问题标题】:Spring boot version 2.5.5 unable to create docker image for copy commandSpring Boot 版本 2.5.5 无法为复制命令创建 docker 镜像
【发布时间】:2022-11-27 01:16:36
【问题描述】:

将我的 spring-boot 应用程序从 spring-boot 版本 2.3.9 升级到 2.5.12 后 我们已经开始低于异常。不确定 spring boot 2.5.12 版本中是否有与 docker 相关的更改

使用以前的版本它工作正常但是在将 gradle 更改为 6.8 和 spring-boot 版本后这个问题开始了......有什么解决方法来解决这个问题? 这是在 Dockerfile 中导致错误的命令

ENV APP_HOME=/app/z-api/

COPY --from=build "${APP_HOME}build/libs/z-api-*.jar" app.jar

COPY --from=build "${APP_HOME}build/libs/z-api-*.jar" app.jar 当对多个源文件使用 COPY 时,目标必须是目录并以 / 结尾

【问题讨论】:

    标签: spring-boot docker build.gradle


    【解决方案1】:

    build/libs 中现在有两个 jar 与 z-api-*.jar 匹配。这是因为 Spring Boot 2.5 不再默认禁用 jar 任务。来自release notes

    Spring Boot Gradle 插件不再自动禁用标准 Gradle jar 和 war 任务。相反,我们现在将分类器应用于这些任务。

    如果您更愿意禁用这些任务,reference documentation 包含更新的示例。

    您可以更新您的 COPY 命令,使其与现在由 jar 任务生成的 -plain.jar 不匹配。或者,您可以禁用 jar 任务:

    jar {
        enabled = false
    }
    

    【讨论】:

      【解决方案2】:

      正如@andy-wilkinson 解释的那样,原因是 Gradle 生成了 2 个 jar 文件

      <appname>-0.0.1-SNAPSHOT.jar
      <appname>-0.0.1-SNAPSHOT-plain.jar
      

      如果您希望根本不构建普通存档,请禁用其任务。

      如果您使用 Kotlin 和 Gradle,请将以下脚本添加到build.gradle.kts

      tasks.named<Jar>("jar") {
          enabled = false
      }
      

      阅读更多https://docs.spring.io/spring-boot/docs/2.5.x/gradle-plugin/reference/htmlsingle/#packaging-executable.and-plain-archives

      【讨论】:

        猜你喜欢
        • 2021-02-27
        • 1970-01-01
        • 2021-12-16
        • 1970-01-01
        • 2020-08-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-19
        相关资源
        最近更新 更多