CentOSのdockerコンテナーでjenkinsを実行する場合の状況をカバーする回答を追加します。この場合、オプションは/ etc / sysconfig / jenkinsで設定されない場合があります(jenkinsサービス開始スクリプトによって異なります)。jenkins.shスクリプトは、jenkinsサービスを開始するために使用されます。このjenkins.shスクリプトはjenkins-inside-dockerプロジェクトで使用されるものと類似しているため、この回答は、そこから派生したdockerプロジェクトのすべてのjenkinsに役立つことが期待されます。
https://github.com/jenkinsci/docker/blob/master/jenkins.sh
以下にTZを取得します。たとえば、Europe / Dublinを取得し、-e $ TZをdocker runに渡します。これにより、/ etc / timezoneに書き込むスクリプトまたは/ etc / localtimeにリンクするスクリプトを作成できますが、重要なことは、これら2つの引数をJAVA_OPTSに渡すことです: 「-Dorg.apache.commons.jelly.tags.fmt.timeZone = $ TZ -Duser.timezone = $ TZ」。jenkins.shスクリプトはこれらをコマンドラインに渡し、jenkinsプロセスを開始します。
docker runコマンドのコンテナー例を作成するときのdockerホスト:
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
オプションはdocker runコマンドのdocker変数で渡され、jenkins startコマンドに渡されました。