如何将插件添加到Docker Jenkins?

8
在此过程中,我希望使用Dockerfile配置将要安装的插件,并将其构建为单独的Jenkins+插件镜像。如何实现呢?
谢谢!

也许Server Fault或Super User社区是询问这个问题的最佳选择,同时希望你能找到答案。 - Kalamarico
1个回答

11
关于插件有两个方面,一个是预安装的插件,另一个是在 Jenkins 启动后存储已安装的插件。因此,对于预安装的插件,您需要将您的组合更改为以下内容。

docker-compose.yml

version: '2'

services:
  jenkins:
    build:
      context: .
    container_name: jenkins
    restart: always
    ports:
      - 80:8080
    volumes:
      - ./jenkins_home:/var/jenkins_home

.dockerignore

jenkins_home

Dockerfile
FROM jenkins/jenkins:lts
COPY plugins.txt /usr/share/jenkins/ref/plugins.txt
RUN /usr/local/bin/install-plugins.sh < /usr/share/jenkins/ref/plugins.txt

plugins.txt

cucumber-testresult-plugin:0.8.2
pam-auth:1.1
matrix-project:1.4.1
script-security:1.13

现在将jenkins_home作为卷挂载将确保您的所有Jenkins更改都得到保留。保留plugins.txt将确保您的容器在启动时预装插件。卷挂载将保留任何共享插件。这是文档中的一个关键点。
引用如下: 当Jenkins容器启动时,它将检查JENKINS_HOME是否具有此引用内容,并在需要时将其复制到那里。它不会覆盖这些文件,因此如果您从UI升级了某些插件,它们在下次启动时不会被还原。
如果您需要额外和最新的信息,请参考此链接:

https://github.com/jenkinsci/docker/blob/master/README.md


能否使用默认的Jenkins镜像,通过UI安装必要的插件并将更改提交到新的Docker镜像中? - Ivan Balashov
@IvanBalashov,这也发生在 Dockerfile 中吗? - Tarun Lalwani
不,我原本希望避免手动编辑 Dockerfile,但现在我发现由于卷的缘故它并没有被保留。 - Ivan Balashov
1
@IvanBalashov,文件中可能有这个文件夹,但如果你映射了卷,它将用来自主机的空文件夹覆盖内部文件夹,因此你添加的任何内容都不会存在。 - Tarun Lalwani

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