LoginSignup
6
5

More than 5 years have passed since last update.

docker-compose.ymlのenvironmentでJAVA_OPTSを設定したらハマった件

Posted at

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で起動しようとしてハマった。

docker-compose.yml
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。

docker-compose.yml
jenkins:
    image: jenkins
    ports:
        - "8080:8080"
    container_name: jenkins
    environment:
        - JAVA_OPTS=-Duser.timezone=Asia/Tokyo -Dfile.encoding=UTF-8
~~以下省略~~
6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5