【问题标题】:How to build docker image with maven?如何使用 maven 构建 docker 镜像?
【发布时间】:2019-10-09 07:43:50
【问题描述】:

我必须在 docker 容器中使用 maven 构建 docker 映像并打包 java 应用程序,但是当我运行构建过程时一切正常,但所有 maven 依赖项都从 maven 远程 repo 下载。

这是我的 docker 文件:

FROM ubuntu_img
CMD ./mvnw -s .mvn/settings.xml --batch-mode clean package

如何配置 docker 或 maven 以从笔记本电脑上的 maven 本地存储库下载依赖项?

【问题讨论】:

  • 或者你可以在本地打包并添加到容器中。
  • @pmverma no 我必须在 docker 容器中运行 maven 构建,因为所有测试都必须在 docker 环境中执行。
  • 您也可以将本地 m2 存储库映射到容器 m2 存储库,这样就不会从远程下载。
  • 启用docker 实验性功能并使用buildkit,您可以在构建期间挂载缓存卷,请查看this answer

标签: java maven docker


【解决方案1】:

首先,您需要将现有本地 Maven 存储库的目录附加到 Docker 容器中:

VOLUME ["/home/<user>/.m2", "/root/.m2"]

然后您需要告诉 Maven(在您的容器内)将此目录用作本地存储库。

setting.xml

<settings ...>
    <localRepository>/root/.m2</localRepository>
    ...
</settings>

【讨论】:

  • 我应该在我的 docker 文件中在哪里写 VOLUME ["/home/&lt;user&gt;/.m2", "/root/.m2"]
  • 您需要将 'VOLUME ...' 添加到 docker-compose.yml 文件中。更多信息在这里:blog.code4hire.com/2018/06/…
  • 我可以在没有 docker-compose.yml 文件的情况下在构建映像步骤中将卷挂载到 docker 文件中吗?
  • 这是一个不同的问题。我认为,你能做的最好的就是完成这个问题,然后你可以在互联网上搜索它或提出一个新问题。
【解决方案2】:

使用音量,像这样:

VOLUME ["/home/test/.m2", "/root/.m2"]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-22
    • 2017-10-03
    • 2020-08-07
    • 1970-01-01
    • 1970-01-01
    • 2020-07-31
    • 1970-01-01
    相关资源
    最近更新 更多