扩展Jenkins镜像以安装Maven。

12

目前我正在使用jenkins/jenkins:lts镜像。它运行正常,并且可以完成我想要的所有操作,除了一个问题。我希望在构建步骤中运行Maven目标。问题在于Jenkins容器环境中没有安装Maven。

因此,我想扩展提到的镜像以运行apt-get install maven命令。

我的解决方案:

FROM "jenkins/jenkins:lts
USER root
RUN /bin/bash -c "apt-get install maven"

这样就够了吗?我假设 jenkins 镜像的所有 RUN 和 ENTRYPOINT 步骤都会自行运行,我不需要在我的 Dockerfile 中重新执行它们,是吗?

4个回答

12
根据文档,这应该在您的Dockerfile中实现。
FROM jenkins/jenkins:lts
# if we want to install via apt
USER root
RUN apt-get update && apt-get install -y maven
# drop back to the regular jenkins user - good practice
USER jenkins

假设您的Docker文件在当前目录中,以下是构建映像并将其安装到本地Docker存储库的方法。
docker build -t jenkins-maven .

更多信息请查看

https://github.com/jenkinsci/docker

按照这种方式安装maven后,mvn版本可能比您需要的版本旧。当我运行时,它是Apache Maven 3.3.9。


你怎么知道用户jenkins是正确的?这个定义在基础镜像中吗? - dokaspar
@dokaspar,它在基础镜像中定义。 - pitchblack408

11

在安装之前,您需要更新软件包缓存,并且不要忘记为apt-get install添加-y参数。

FROM jenkins/jenkins:lts
RUN apt-get update && apt-get install -y maven

成功了!使用我的新镜像执行 docker-compose up 后出现了 ERROR: pull access denied for jenkins/jenkins-maven, repository does not exist or may require 'docker login' - 我错过了什么吗? - xetra11
请展示给我 jenkins-maven 镜像的 docker build 命令参数。 - Bukharov Sergey
docker build -t jenkins-maven . - xetra11
1
可能在 docker-compose.yml 文件中,镜像的名称是 jenkins/jenkins-maven。但是你构建的镜像名称是 jenkins-maven。名称必须相同。 - Bukharov Sergey
4
我在docker-compose中运行了命令 bash -c "apt-get update && install -y maven",但我遇到了错误 E: List directory /var/lib/apt/lists/partial is missing. - Acquire (13: Permission denied)。我也尝试了sudo,但出现了 bash: sudo: command not found 的错误。有什么办法可以让我运行这个命令吗? - Alex Pavlov
@AlexPavlov,请看一下我下面的帖子。它更详细。我遇到了类似的问题。 - pitchblack408

5

以下是将maven安装到docker的最简单方法:

  1. 使用root权限连接到docker

    sudo docker exec -u root -t -i [container-id] bash

  2. 更新并安装maven

    apt-get update & apt-get install

就是这样。


这并没有真正回答问题。可以使用Dockerfile创建包含所需工具的镜像。 - pitchblack408

2

对我来说正常工作

FROM jenkins/jenkins:lts
USER root
RUN apt-get update && apt-get install -y maven

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接