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

我似乎无法让jenkins在启动时将预先安装的插件复制到预期的/var/jenkins_home/plugins目录中,如此处所述 。

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

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

当我build立容器,它说插件安装成功,并在我运行容器后:

  • 插件不会出现在Web控制台中,重新启动也不能解决问题。
  • 容器内的/var/jenkins_home/plugins是空的
  • 容器内部不存在/usr/share/jenkins/ref/plugins

但是我确实在/var/jenkins_home/war/WEB-INF/detached-plugins看到了预期/var/jenkins_home/war/WEB-INF/detached-plugins

我试图通过添加来复制它们:

 RUN cp -R /var/jenkins_home/war/WEB-INF/detached-plugins/* /var/jenkins_home/plugins/` 

但是在构build过程中出现以下错误:

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

根据docker中心的文件。

创build您的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 

build立新的形象:

 $ 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. --------------------------------------------------- 

启动容器来validation:

 $ 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 

或者loginwebconsole。 greenballs插件很容易validation。 成功后,你会得到一个绿色的球,而不是一个蓝色的。

我正在build造和运行我的容器,如下所示:

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

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

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

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

docker工人101: – /