【问题标题】:How to make maven install in docker container如何在docker容器中安装maven
【发布时间】:2022-07-13 13:37:12
【问题描述】:

我在 Maven 上有一个多模块项目。它非常古老,并伴随着一种特殊的手鼓舞蹈。

项目结构

root
  |__api
  |__build
  |__flash
  |__gwt
  |__server
  |__service
  |__shared
  |__target
  |__toolset

为了构建这样一个项目,我有一个特殊的脚本需要在项目的根目录中执行。

./build/build_and_deploy.sh

在windows上构建的时候,问题很多(路径长、符号和行分隔符丢失等问题),所以想在docker中构建这个项目。 起初我想从 io.fabric8 连接 docker-maven-plugin 作为 maven 中的插件,但据我了解,它无法在 docker 中运行自身的构建.

于是我尝试写Dockerfile,遇到如下问题 我不想将.m2文件夹复制到docker,那里有很多依赖项,这将是相当长的时间。 我不想复制容器内的项目源 我无法运行脚本。/build/build_and_deploy.sh

我如何看待这个问题的解决方案。

  1. 创建一个 dockerfile,将 maven 和 java8 连接到它,然后 bash
  2. 使用 Volume 连接源和 maven 存储库
  3. 因为我是通过VPN工作,并且脚本部署了,所以需要通过它找到问题的解决方案(代理/端口转发???)

如果您有类似脚本的经验或示例或有能力的建议,那么我会很高兴听到它

【问题讨论】:

  • 如果您的构建脚本在 Windows 中无法运行,可以使用 Vagrant 之类的工具来帮助您设置可以使用的 Linux VM。您可能可以使您描述的设置工作,但正如您所注意到的,它与 Docker 的设计使用方式有点不同。还有一些关于“Docker 绑定挂载不更新”和“VPN 连接在容器内部不起作用”的常见问题。我可能会修复构建脚本或使用更 Unixy 系统(Linux 或 MacOS)进行开发。
  • @DavidMaze 放置一个成熟的虚拟机听起来太负荷了。如果您有机会仔细看看,我很乐意与您联系

标签: java docker maven dockerfile


【解决方案1】:

您可以在 Docker 中使用 Maven 执行构建。 为此,您基本上会触发 docker build . 之类的东西,其余的都在 Dockerfile 中。

从具有 Maven 的容器开始,例如 maven。 添加整个项目结构 运行你的构建脚本 保存构建结果

要保存构建结果,您可能希望将其上传到某个存储库,或将其存储在容器运行后可用的已安装卷中。如果您使用多阶段 docker 构建,或者将其复制到下一个阶段。

如果您想防止重复下载 .m2 目录或其中有许多其他依赖项,请在运行容器时将其挂载为卷。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-11
    • 2021-09-08
    • 1970-01-01
    • 1970-01-01
    • 2020-01-17
    • 2019-06-03
    • 2021-05-19
    • 1970-01-01
    相关资源
    最近更新 更多