使用默认插件设置Docker Jenkins

时间:2017-11-08 16:59:19

标签: docker jenkins jenkins-plugins

我想创建一个基于Jenkins的图像来安装一些插件以及npm。为此,我有以下Dockerfile

FROM jenkins:2.60.3
RUN install-plugins.sh bitbucket
USER root
RUN apt-get update
RUN curl -sL https://deb.nodesource.com/setup_8.x | bash -
RUN apt-get install -y nodejs
RUN npm --version
USER jenkins

这很好但是当我运行图像时我有两个问题:

  • 我试图手动安装的插件似乎没有因为某些原因而持久存在。
  • 我收到提示我要安装的插件列表,但我不想安装任何其他插件。

我是否遗漏了配置Dockerfile的任何内容,或者我想要实现的内容根本无法实现?

2 个答案:

答案 0 :(得分:2)

在没有看到install-plugins.sh的内容的情况下,我无法评论为什么插件不会持久存在。这很可能是由于安装目的地不正确造成的;在此阶段,持久性不应成为问题,因为插件安装已内置于映像本身。

对于后一个问题,您应该可以通过向Dockerfile添加行ENV JAVA_OPTS=-Djenkins.install.runSetupWizard=false 来完全跳过安装向导。请注意,如果Jenkins图像暴露给整个世界,这可能会带来安全风险,因为此选项会禁用身份验证

编辑:Docker镜像的默认插件目录是/var/jenkins_home/plugins

编辑2:根据Jenkins Docker repo上的README,添加行RUN echo 2.0 > /usr/share/jenkins/ref/jenkins.install.UpgradeWizard.state应该完成同样的事情

答案 1 :(得分:0)

自2017年发布最新答案以来,事情发生了变化,并且不再有效。当前方法是在以下Dockerfile片段中:

# Prevent setup wizard from running.
# WARNING: Jenkins will start with security disabled, without any password.

ENV JENKINS_OPTS="-Djenkins.install.runSetupWizard=false"

# plugins.txt must contain the list of plugins to be installed
# (One plugin per line, e.g. sidebar-link:1.11.0)

COPY plugins.txt /tmp/plugins.txt
RUN /usr/local/bin/install-plugins.sh < /tmp/plugins.txt