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

时间:2017-06-23 18:06:09

标签: docker jenkins

我试图创建自己的Jenkins图像,跳过向导并通过环境变量设置管理员密码。

我尝试设置状态以禁用它(取自Mesosphere Jenkins服务),但这不起作用:

# disable first-run wizard
RUN echo 2.0 > ${JENKINS_STAGING}/jenkins.install.UpgradeWizard.state

如何跳过向导并通过变量设置管理员密码而不是自动生成的密码?

2 个答案:

答案 0 :(得分:7)

如果您正在使用Docker Hub(https://hub.docker.com/r/jenkins/jenkins/)中的 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

答案 1 :(得分:5)

设置管理员密码的正确方法是使用参数启动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 *参数是最重要的,因为它们为admin设置了角色和密码。