如何在后台 运行 jenkins.war 并使用 cli

How to run jenkins.war in background and use cli

我是 Docker 的新手。我需要完成以下任务:

我写了Docker文件

FROM java:8
EXPOSE 8080
ADD jenkins.war jenkins.war
ENTRYPOINT ["java","-jar","jenkins.war"]

然后我运行docker run ... 但是有一个问题我不能使用控制台,但我必须使用控制台来安装插件。我试图在最后使用 & 来解决这个问题。它没有帮助。 P.S 我不能使用 jenkins 镜像

Jenkins 使用 JENKINS_HOME 目录存储配置、作业和插件。

一种实现您想要的方法可能是在 运行ning jenkins 之前在此目录中设置插件。

  • 如果你使用官方的 jenkins 镜像,那么也许你可以使用一个数据量来存储它,然后 运行 docker 使用这个数据量:docker run -V /your/data/volume:/var/jenkins_home jenkins/jenkins
  • 如果您不想要数据量,而想要带有插件的图像,那么您可以向您的docker文件中添加如下内容:

RUN mkdir -p ~/.jenkins/plugins && \ cd ~/.jenkins/plugins && \ wget http://your/plugins/plugins.jpi

  • 最后,您可以通过创建一个 shell 脚本来混合两者,该脚本检查插件目录是否存在,如果不存在,则启动 jenkins。此 shell 脚本将是您的图像入口点。

注意:您需要作为插件下载的文件是 .jpi 文件!不是 .hpi.

作为参考,这里有一个例子:

FROM java:8
RUN  wget https://updates.jenkins-ci.org/download/war/2.121.2/jenkins.war && \
    mkdir -p ~/.jenkins/plugins && \
    cd ~/.jenkins/plugins && \
    wget https://repo.jenkins-ci.org/releases/org/jenkins-ci/plugins/job-dsl/1.33/job-dsl-1.33.jpi
ENTRYPOINT ["java","-jar","jenkins.war"]