使用环境变量设置Jenkins Docker管理员密码

5
我正试图创建一个自己的Jenkins镜像,跳过向导,通过环境变量设置管理员密码。
我尝试使用禁用状态(来自Mesosphere Jenkins服务),但这并不起作用:
# disable first-run wizard
RUN echo 2.0 > ${JENKINS_STAGING}/jenkins.install.UpgradeWizard.state

我该如何跳过向导,在通过变量设置管理员密码时,而不是自动生成密码?

2个回答

10

如果您正在使用Docker Hub上的jenkins/jenkins镜像(https://hub.docker.com/r/jenkins/jenkins/),则可以通过设置此环境变量来禁用设置向导:

JAVA_OPTS=-Djenkins.install.runSetupWizard=false

而要预配置管理员用户,您可以使用此环境变量:

JENKINS_OPTS=--argumentsRealm.roles.user=admin --argumentsRealm.passwd.admin=admin --argumentsRealm.roles.admin=admin

这是我本地一直在使用的docker-compose示例:

version: '3'

services:
  jenkins:
    image: jenkins/jenkins:2.150.3-alpine
    environment:
      JAVA_OPTS: -Djenkins.install.runSetupWizard=false
      JENKINS_OPTS: --argumentsRealm.roles.user=admin --argumentsRealm.passwd.admin=admin --argumentsRealm.roles.admin=admin
    volumes:
      - ./jenkins_home:/var/jenkins_home
    ports:
      - 8080:8080

7
正确设置管理员密码的方法是通过使用参数启动Jenkins:
java ${JVM_OPTS}                                \
 -Dhudson.udp=-1                                 \
 -Djava.awt.headless=true                        \
 -Dhudson.DNSMultiCast.disabled=true             \
 -Djenkins.install.runSetupWizard=false          \
 -jar ${JENKINS_FOLDER}/jenkins.war              \
 ${JENKINS_OPTS}                                 \
 --httpPort=${PORT1}                             \
 --webroot=${JENKINS_FOLDER}/war                 \
 --ajp13Port=-1                                  \
 --httpListenAddress=0.0.0.0                  \
 --ajp13ListenAddress=0.0.0.0                 \
 --argumentsRealm.passwd.admin=${PASSWORD}       \
 --argumentsRealm.roles.user=admin               \
 --argumentsRealm.roles.admin=admin               \
 --prefix=${JENKINS_CONTEXT}

在这种情况下,--argumentsRealm* 参数是最重要的,因为它们设置了管理员的角色和密码。

1
你如何在Docker Compose中使用它们? - Wasif Altaf

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