expressでsequelizeのSequelize.NOWを日本時間にする(docker alpineとMySQLも日本時間に)
はじめに
- 会員登録処理を実装したところ、登録日が日本日付にならなあったので色々と調整してみた px-wing.hatenablog.com
- 最初にOSの時間を調整してみてダメで、結局はsequelizeの設定ファイルを修正したら日本時間になりました。
Alpine
Dockerfileに下記のコマンドを記述してイメージファイルを作成する
RUN apk add tzdata RUN touch /etc/localtime RUN cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
日本時間になっていることを確認する
# date Sun Jun 7 07:09:22 JST 2020
※alpineの場合、docker-composeファイル内で環境変数でタイムゾーンを指定して試してみましたが、日本時間になりませんでした。そのため、上記の方法で対応
mysql
- docker-compose.yml
db:
image: mysql
command: --default-authentication-plugin=mysql_native_password
restart: always
volumes:
- ./db/:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: hogehoge
TZ: "Asia/Tokyo"
日本時間になっていることを確認する
# date Sun Jun 7 07:09:22 JST 2020
※OSの時間を設定しただけでは日本日付になることがありませんでした。
config.json
- sequelizeのconfig.jsonに
"timezone": "+09:00"を指定することで日本時間に設定することができました。
{
"development": {
"username": "root",
"password": "password",
"database": "news",
"host": "db",
"dialect": "mysql",
"operatorsAliases": false,
"timezone": "+09:00"
},