Docker 版 Nginx
Alpine Linux イイヨイイヨー
- 私は、軽量なイメージが好きなので、使えそうなら Alpine Linux 版を使います。
んが、 timezone を楽に指定できない。。。
- docker-compose.yml の environment で、
TZ=Asia/Tokyo
指定したい場面、ありますよね。
- Alpine Linux がベースのイメージだと (nginx:x.y.z-alpine) 、環境変数に TZ を指定して起動しても、 timezone 指定できません。
- Issue には上がっているようですが、現状、 Dockerfile 書いて頑張るしか道はないようで。
- ※ 2017 年 3 月 13 日段階の情報です。
# Alpine Linux ベース (TZ 指定なし)
$ docker run --name nginx_test -p 8080:80 nginx:1.10.3-alpine
172.17.0.1 - - [13/Mar/2017:13:36:59 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36" "-"
# Alpine Linux ベース (TZ 指定あり)
$ docker run --name nginx_test -p 8080:80 -e TZ=Asia/Tokyo nginx:1.10.3-alpine
172.17.0.1 - - [13/Mar/2017:13:38:16 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36" "-"
timezone を楽に指定したいなら
- Alpine Linux ベースではない方のイメージ (Debian jessie ベース) を使って、環境変数 TZ を設定するのが一番簡単だと思います。
# Debian jessie ベース (TZ 指定なし)
$ docker run --name nginx_test -p 8080:80 nginx:1.10.3
172.17.0.1 - - [13/Mar/2017:13:34:35 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36" "-"
# Debian jessie ベース (TZ 指定あり)
$ docker run --name nginx_test -p 8080:80 -e TZ=Asia/Tokyo nginx:1.10.3
172.17.0.1 - - [13/Mar/2017:22:35:06 +0900] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36" "-"
一応、イメージサイズ比較のために、ペタッときます
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx 1.10.3-alpine f94d6dd9b576 9 days ago 54 MB
nginx 1.10.3 e526633b91df 12 days ago 181 MB
- まあ、3.5 倍ほどイメージサイズ違いますね。。。
まとめ
- Docker 版 Nginx で timezone を楽に指定したいなら、 Debian jessie ベースのイメージを使うとお手軽ですね。
- Alpine Linux ベースのイメージを使いたいなら、 tzdata を入れる Dockerfile を自分で作って管理すると良いのでは?