JenkinsコンテナをたてたらタイムゾーンがUTCだったので、Asia/Tokyoに変更するときの話。
コンテナのJavaの起動オプションにuser.timezone=Asia/Tokyo
を設定すればいいので
$ docker run --rm -p 8080:8080 -e JAVA_OPTS='-Duser.timezone=Asia/Tokyo' jenkins
とやって見事タイムゾーンの変更に成功。
と、ここまでは良かったが、のちに他のコンテナとリンクさせる必要が出てきたので、docker-compose.yml
を作ってdocker-compose up
で起動しようとしてハマった。
jenkins:
image: jenkins
ports:
- "8080:8080"
container_name: jenkins
environment:
- JAVA_OPTS='-Duser.timezone=Asia/Tokyo'
~~以下省略~~
こんなdocker-compose.ymlを書いてdocker-compose up
したら、Jenkinsが起動してくれない。
$ docker-compose up
Creating jenkins...
Attaching to jenkins
jenkins_1 | Error: Could not find or load main class '-Duser.timezone=Asia.Tokyo'
jenkins exited with code 1
Gracefully stopping... (press Ctrl+C again to force)
調べて見たら、こんなIssueが見つかって、解決策がすでに書いてあった。
Inconsistent interpretation of environment in docker-compose · Issue #1220 · docker/compose
Remove the outer quotes (despite the space in the val) to give catalina.sh values it can work with.
どうやらシングルクォーテーションはいらないみたい。
複数のJavaオプションをそのままスペースで連結してもOK。
jenkins:
image: jenkins
ports:
- "8080:8080"
container_name: jenkins
environment:
- JAVA_OPTS=-Duser.timezone=Asia/Tokyo -Dfile.encoding=UTF-8
~~以下省略~~