我试图创建自己的Jenkins图像,跳过向导并通过环境变量设置管理员密码。
我尝试设置状态以禁用它(取自Mesosphere Jenkins服务),但这不起作用:
# disable first-run wizard
RUN echo 2.0 > ${JENKINS_STAGING}/jenkins.install.UpgradeWizard.state
如何跳过向导并通过变量设置管理员密码而不是自动生成的密码?
答案 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设置了角色和密码。