【问题标题】:Including a maven artifact in Dockerfile在 Dockerfile 中包含一个 Maven 工件
【发布时间】:2020-04-01 08:03:58
【问题描述】:

我们需要在 Dockerfile 中包含一个 maven 工件(一个 jar 文件)。这个 jar 文件在我们的应用程序的运行命令中用作参数。在构建目录中不存在且仅存在于本地 maven 存储库中的 Dockerfile 中复制 maven 工件的正确方法是什么?我发现由于 maven 工件不会在构建上下文中,因此复制它的唯一方法是从容器的 .m2 目录(.m2 目录包含所有 maven 工件)。这是正确的还是有更好的方法? 谢谢

【问题讨论】:

  • 项目构建后,生成的工件位于target 目录中...在$HOME/.m2/repository 中,只有在您执行mvn install 时它们才可用...

标签: maven docker


【解决方案1】:

您可以通过在创建时将 jar 复制到您的图像来做到这一点。

这里有一个例子。假设您想使用 Quava jar,并且它已在您的 POM 中列为依赖项。

在你的根项目中创建Makefile(你有你的POM.xml),

create_image: Dockerfile build
        docker build . -t myimage:mytag

build: POM.xml
        mvn clean install

在同一目录下创建 Dockerfile:

FROM centos
COPY ~/.m2/repository/com/google/guava/14.0.1/guava.jar /
CMD ["sh run.sh", "/quava.jar']

只需使用以下方法创建您的图像:

make create_image

【讨论】:

    猜你喜欢
    • 2021-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    相关资源
    最近更新 更多