Jenkins Docker容器在启动时不会将预安装的插件复制到JENKINS_HOME

时间:2016-12-21 01:11:02

标签: jenkins docker

我似乎无法让詹金斯在启动时将预安装的插件复制到预期的/var/jenkins_home/plugins目录,如文档here所示。

我正在使用一个非常基本的Dockerfile:

FROM jenkins:alpine
USER root
RUN /usr/local/bin/install-plugins.sh ssh-agent
USER jenkins

当我构建容器时,它表示插件安装成功并且在我运行容器之后:

  • 插件未出现在Web控制台中,重新启动则没有 解决问题。
  • 容器内的
  • /var/jenkins_home/plugins为空
  • /usr/share/jenkins/ref/plugins在容器中不存在

<小时/> 然而我确实看到了预期的插件 /var/jenkins_home/war/WEB-INF/detached-plugins

我试图通过添加:

来复制它们
RUN cp -R /var/jenkins_home/war/WEB-INF/detached-plugins/* /var/jenkins_home/plugins/`

但是在构建期间我遇到以下错误:

cp: cannot stat '/var/jenkins_home/war/WEB-INF/detached-plugins/*': No such file or directory`

2 个答案:

答案 0 :(得分:3)

根据docker hub的文件。

创建dockerfile

FROM jenkins:alpine
COPY plugins.txt /usr/share/jenkins/plugins.txt
RUN /usr/local/bin/plugins.sh /usr/share/jenkins/plugins.txt

Plugins.txt与dockerfile位于同一个文件夹中。示例内容:

git:3.0.0
greenballs:1.15

构建新图片:

$ docker build -t my-jenkins:2.0 .

你已经看到了这个:

Step 3 : RUN /usr/local/bin/plugins.sh /usr/share/jenkins/plugins.txt
 ---> Running in 5df5d14d8571
Analyzing war: /usr/share/jenkins/jenkins.war
Downloading git:3.0.0
Downloading greenballs:1.15
---------------------------------------------------
INFO: Successfully installed 2 plugins.
---------------------------------------------------

启动容器以验证:

$ docker run -d -p 8080:8080 my-jenkins:2.0  

$ docker exec -it e1f8ca9302d8 bash
bash-4.3$ ls -l /var/jenkins_home/plugins/
total 2232
drwxr-xr-x 5 jenkins jenkins    4096 Dec 23 10:29 git
-rw-r--r-- 1 jenkins jenkins 2152524 Dec 23 10:29 git.jpi
-rw-r--r-- 1 jenkins jenkins       0 Dec 23 10:29 git.jpi.pinned
-rw-r--r-- 1 jenkins jenkins       6 Dec 23 10:29 git.jpi.version_from_image
drwxr-xr-x 9 jenkins jenkins    4096 Dec 23 10:29 greenballs
-rw-r--r-- 1 jenkins jenkins  111507 Dec 23 10:29 greenballs.jpi
-rw-r--r-- 1 jenkins jenkins       0 Dec 23 10:29 greenballs.jpi.pinned
-rw-r--r-- 1 jenkins jenkins       5 Dec 23 10:29 greenballs.jpi.version_from_image

或者检查网络控制台。 greenballs插件很容易验证。在成功构建之后,您将获得一个绿色球而不是蓝色。

答案 1 :(得分:-1)

我正在构建和运行我的容器:

docker build .
docker run -d -p 8080:8080 -p 50000:50000 jenkins

当然,我运行的容器没有插件,它不是基于我刚刚构建的图像!

我应该做这样的事情来运行我自己的形象:

docker build --tag custom_jenkins .
docker run -d -p 8080:8080 -p 50000:50000 custom_jenkins

Docker 101: - /