使用默认插件设置 Docker Jenkins



我想创建一个基于 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 的内容,或者我想要实现的目标根本不可能?

没有看到install-plugins.sh的内容,我无法评论为什么插件没有持久化。这很可能是由不正确的安装目标引起的;在此阶段,持久性应该不是问题,因为插件安装内置于映像本身中。

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

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

编辑 2:根据 Jenkins Docker 存储库上的自述文件,添加行RUN echo 2.0 > /usr/share/jenkins/ref/jenkins.install.UpgradeWizard.state应该完成同样的事情

自 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

最新更新