扩展jenkins图像以安装maven

时间:2017-09-05 10:25:43

标签: maven docker jenkins dockerfile docker-container

此刻我正在使用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 个答案:

答案 0 :(得分:6)

您需要在安装前更新软件包缓存,并且不要错过-y的{​​{1}}。

apt-get install

答案 1 :(得分:2)

根据文档,该文件位于您的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 repo中的方式

docker build -t jenkins-maven .

更多信息

https://github.com/jenkinsci/docker

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

答案 2 :(得分:0)

这是将Maven安装到docker的最简单方法:

  1. 使用root特权连接到Docker

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

  2. 更新并安装Maven

    apt-get更新和apt-get安装

就是这样。

答案 3 :(得分:0)

为我准备的工作文件

function savedata(SOME_ID,tournumber, tname, arname, ename, duration, guide, tdate, artype, entype)
{
  var tourRef = firebase.database().ref('tours/Available_tours/'+SOME_ID)
    .child(parseInt(tournumber))
    .set({dayAR:arname, dayEN:ename, duration:duration, 
          guide:guide, tourDate:tdate, tourName:tname, typeAR:artype, typeEN:entype});   

}