【问题标题】:Packaging step in Dockerfile is downloading dependencies although there is a previous step to resolve dependenciesDockerfile 中的打包步骤是下载依赖项,尽管前面有一个步骤来解决依赖项
【发布时间】:2020-01-16 10:42:11
【问题描述】:

我的 Dockerfile:

FROM maven:3.6.1-jdk-12
WORKDIR /app

COPY pom.xml pom.xml
RUN mvn -B dependency:resolve dependency:resolve-plugins

COPY . .
RUN mvn -B package spring-boot:repackage

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","target/my-service-1.0.1.jar"]

我想在重新打包步骤之前下载所有依赖项,这样我就不需要等待每次代码更改时下载依赖项,只需 pom.xml 更改。

但是这不起作用并且步骤mvn -B package spring-boot:repackage总是在下载包。

我的pom.xml比较长,如果有相关信息请告诉我,我会补充的。

【问题讨论】:

  • 您正在执行哪些命令来创建 docker 映像?您确定它的 mvn repackage 目标是重新下载依赖项而不是解析的目标吗?如果一切都在那里,您可以检查图像中的 maven 存储库的内容。

标签: java maven spring-boot jar dockerfile


【解决方案1】:

我终于设法使用这个 Dockerfile 并通过添加 go-offline-maven-plugin 来拆分我的依赖步骤。

FROM maven:3.6.1-jdk-12
WORKDIR /app

COPY pom.xml pom.xml
RUN mvn de.qaware.maven:go-offline-maven-plugin:resolve-dependencies

RUN find /root/.m2 -type f -name '_*.repositories' -delete

COPY . .
RUN mvn -o package spring-boot:repackage

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","target/my-service-1.0.1.jar"]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    相关资源
    最近更新 更多