DockerのMySQL、PostgreSQL、SQLServerにタイムゾーンを設定する方法

docker

デフォルトはUTC

特に指定しない場合、UTCとなります
日時を保存するカラムにNOW()やGETDATE()を使用する場合、日本時間から9時間ずれることになります

MySQLとSQLServerの場合

MySQLとSQLServerの場合、コンテナのタイムゾーンと同じになります
コンテナのタイムゾーンを変更するには環境変数TZ=Asia/Tokyoを指定します
Docker-compose.ymlの場合、以下のようになります

version: '2'
services:
  mysql: 
    image: mysql 
    environment: 
      MYSQL_RANDOM_ROOT_PASSWORD: 1 
      MYSQL_DATABASE: database 
      MYSQL_USER: user 
      MYSQL_PASSWORD: password 
      TZ: Asia/Tokyo 
  mssql: 
    image: microsoft/mssql-server-linux 
    environment: 
      ACCEPT_EULA: Y 
      SA_PASSWORD: "!Passw0rd" 
      TZ: Asia/Tokyo

PostgreSQLの場合

PostgreSQLの場合はTZ=Asia/Japanではタイムゾーンが変更されません
PGTZを追加する必要があります
※特に別途コンテナで何もしないのであればTZは必要ありません

version: '2' 
services: 
  postgres: 
    image: postgres 
    environment: 
      POSTGRES_USER: user 
      POSTGRES_PASSWORD: password 
      POSTGRES_DB: database 
      PGTZ: Asia/Tokyo
タイトルとURLをコピーしました