フリーランス 技術調査ブログ

フリーランス/エンジニア Ruby Python Nodejs Vuejs React Dockerなどの調査技術調査の備忘録

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" 
  },

参考文献

github.com