dockerでnginx 1.17.6の環境を構築したときに、TimeZoneがUTCとなっていたため、ログに出力される時間などがおかしい状態があり、JSTにするのにちょっとてこずったのでメモを残します。
.
├── docker-compose.yml
└── web
├── build
│ └── Dockerfile
└── conf
└── default.conf
php-fpmの環境構築用にnginxを用意していたため、default.confは余計な設定が入っています。
default.conf
server {
listen 80;
server_name 127.0.0.1;
#ドキュメントルートの設定
root /var/www/;
index index.php index.html index.htm;
location / {
# 指定された順序でfileやdirの存在を確認し、最初に見つかったものを返却する。
# いずれも無かった場合は、最後に指定されたパスに遷移する。
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# php-fpmのコンテナである「app」のポート9000に対してリクエストのパスを設定
fastcgi_pass app:9000;
# 1台のサーバーでnginx+php-fpmを動作させる場合、Unixソケットの方が高速に動作するため、
# 以下の設定をするが、今回はnginxとphp-fpmを別のコンテナにしているため、ポートでの接続となっている。
# fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
}
docker-compose.yml
version: '3'
services:
web:
build: ./web/build
ports:
- "80:80"
depends_on:
- app
volumes:
- ./web/conf/default.conf:/etc/nginx/conf.d/default.conf
./web/build/Dockerfile
FROM nginx:1.17.6
# TimeZoneをAsia/Tokyoに設定する
ENV TZ Asia/Tokyo
RUN echo "${TZ}" > /etc/timezone \
&& dpkg-reconfigure -f noninteractive tzdata
これでコンテナを起動してnginxのコンテナにアクセスし、date
コマンドで時間を確認すると以下のようになる。
$ docker-compose exec web bash
root@0eb5b274bc8d:/# date
Thu Dec 26 20:33:06 JST 2019 ← JSTになっている。