CentOS altındaki bir docker kapsayıcısında jenkinleri çalıştırırken durumu kapsayacak bir yanıt ekleme . Bu durumda, seçenekler / etc / sysconfig / jenkins içinde ayarlanmamış olabilir (jenkins hizmet başlangıç komut dosyalarınıza bağlı olarak). Jenkins hizmetini başlatmak için bir jenkins.sh betiği kullanılır. Bu jenkins.sh betiği, jenkins-in-docker projesi tarafından kullanılana benzer, bu nedenle bu cevap, bundan doğan docker projelerindeki herhangi bir jenkins için faydalıdır.
https://github.com/jenkinsci/docker/blob/master/jenkins.sh
Aşağıda TZ, örneğin Avrupa / Dublin ve docker'a -e $ TZ'yi geçiyoruz, böylece / etc / timezone veya links / etc / localtime'a yazan bir komut dosyası alabiliriz, ancak önemli olan bu iki argümanı JAVA_OPTS'da geçirmektir: "-Dorg.apache.commons.jelly.tags.fmt.timeZone = $ TZ -Duser.timezone = $ TZ". Jenkins.sh betiği, bunları jenkins işlemini başlatan komut satırına iletir.
Docker çalıştır komutunun kapsayıcı örneğini oluştururken docker ana bilgisayarında:
TZFILE=$(readlink -f /etc/localtime)
TZ=$(echo $TZFILE|sed s#.*zoneinfo\/##)
TZARG=" -e $TZ "
ID=$(docker run $TARG \
-d \
--user=jenkins \
--name jenkins-${USER} \
--restart always \
-p $HOST_IP:$JENKINS_PORT:${JENKINS_PORT_INTERNAL} \
-p $HOST_IP:$JENKINS_SLAVE_PORT:50000 \
$TZARG \
--env JAVA_OPTS="-Dhudson.Main.development=true \
-Dhudson.footerURL=$JENKINS_URL \
-Dorg.apache.commons.jelly.tags.fmt.timeZone=$TZ -Duser.timezone=$TZ \
-Xms800M -Xmx800M -Xmn400M \
" \
--env JENKINS_HOME=/var/jenkins_home \
-v $JENKINS_DIR:/var/jenkins_home \
$VARGS \
$ADDITIONALARGS \
$IMAGE \
/bin/tini /usr/local/bin/jenkins.sh \
)
echo "INFO: container ID:$ID" |tee JENKINS.CONTAINER.ID
Seçenekler, docker run komutundaki docker değişkenine aktarıldı ve sonra jenkins start komutuna geçirildi.