Jenkins Docker设置来自环境variables的pipe理员密码

我试图创build我自己的Jenkins图像,跳过向导并通过环境variables设置pipe理员密码。

我试图设置状态来禁用它(取自Mesosphere Jenkins服务),但没有奏效:

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

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

设置pipe理员密码的正确方法是用参数启动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设置angular色和密码。

我不知道该怎么做。 这是我们所做的。 如果你有一个shell脚本最终会启动一个jenkins docker容器,那么这个命令会从主机执行,这样你就可以获得密钥,以防你用它来达到恶意目的(比如login):

 admin_key=$(docker exec -t jenkins-ci cat /var/jenkins_home/secrets/initialAdminPassword | sed 's/\r//') 

jenkins-ci是这种情况下的容器名称。

你也可以修改该文件(docker cp从主机到该位置的某个文件)。 我还没有试过这个知道它是否真的有效。

在这个问题上还有其他的select。 祝你自己的热门自动化!