一、问题描述:

new Date()获取时间,在开发环境没问题,但是用docker部署以后时间就会差8小时的问题。

二、问题分析:

Docker默认时区是格林威治时间,时区为GTM,格林威治是英国伦敦泰晤士河南岸的一个地方,与北京时间差8小时,GTM+8就是北京时间。所以差8小时就是服务的时区有问题。

三、解决方案:

修改docker服务的时区即可,一般修改docker容器的时间由两种方式:

  • 直接修改容器时区
  • 通过修改Dockerfile来修改镜像,间接修改容器的时区
    对比方案:因为每次部署都会生成新容器,这样的话每次部署都需要修改容器的时区,操作起来很麻烦。
    故,在此介绍修改Dockerfile的方式:
    1.在Dockerfile添加下面语句:
ENV TZ="Asia/Shanghai"

在这里插入图片描述

经我们的环境测试,添加上面一句即可,如果不生效则在上面再加一句:但是这样会在构建的过程下载tzdata包,影响部署时间。

# 安装tzdata
RUN apk add --no-cache tzdata
 # 设置时区
ENV TZ="Asia/Shanghai"

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐