Додайте відповідь, щоб висвітлити ситуацію під час запуску дженкінів у докер-контейнері під CentOS . У цьому випадку параметри можуть не встановлюватися в / etc / sysconfig / jenkins (залежно від сценаріїв запуску служби jenkins). Сценарій jenkins.sh використовується для запуску служби jenkins. Цей скрипт jenkins.sh схожий на той, який використовується у проекті jenkins всередині докера, тому ця відповідь, сподіваємось, корисна будь-яким дженкінсам у докерських проектах, що випливають із цього.
https://github.com/jenkinsci/docker/blob/master/jenkins.sh
Нижче ми отримуємо TZ, наприклад, Європа / Дублін і передаємо -e $ TZ до докера, щоб ми могли мати сценарій, який пише, що / etc / timezone або посилання / etc / localtime, але важливо передати ці два аргументи в JAVA_OPTS: "-Dorg.apache.commons.jelly.tags.fmt.timeZone = $ TZ -Duser.timezone = $ TZ". Сценарій jenkins.sh передає їх до командного рядка, який запускає процес jenkins.
На хості докера при створенні контейнера приклад команди docker run:
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
Параметри передавались у змінну докера в команді запуску докера, а потім передавали команді запуску jenkins.