【问题标题】:Installing NPM and Maven packages in a dockerfile在 dockerfile 中安装 NPM 和 Maven 包
【发布时间】:2018-09-20 20:19:29
【问题描述】:

我正在使用 Jenkins,它会生成一个新的 docker 容器来运行作业。作业完成后,容器将被删除。

每次运行 mvn install 时,都会从 Maven 存储库下载 maven 依赖项。由于每个作业都会生成一个新的 docker 容器,因此 maven 依赖项不会存储在本地,每次都必须下载。

每次运行 npm install 时下载的 npm 包也是如此。

我希望有一种方法可以将所有依赖包下载到用于运行 Jenkins 作业的 docker 映像上。这将导致一次性下载,而不必每次都下载。

这是我尝试使用的 dockerfile,但它不适用于 maven 依赖项 -

FROM ubuntu:trusty
RUN apt-get -qq update && apt-get -q -y install maven

USER jenkins
COPY pom.xml /tmp/pom.xml
RUN mvn dependency:resolve -f /tmp/pom.xml

使用新映像,maven 依赖项仍然是从 mvn 存储库而不是从本地存储库下载的。 还必须使用 package.json 文件为 npm 包做一些事情。

【问题讨论】:

    标签: node.js maven docker jenkins


    【解决方案1】:

    如果您希望在使用 Docker 容器时保留一些数据,您应该使用 volumes。因此,对于 Maven,请尝试将容器的 ~/.m2 目录链接到主机上的某个目录,该目录将存储所有下载的依赖项。

    【讨论】:

    • 您不能在构建时使用卷。
    • 是的,这是真的。应该在使用docker run 启动容器时定义要使用的卷。这一切都在我上面附加的链接下得到了很好的描述。
    猜你喜欢
    • 1970-01-01
    • 2018-03-11
    • 2015-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-14
    相关资源
    最近更新 更多