Docker部署golang应用时时区问题
2018年3月1日 · 17 字 · 1 分钟
目前golang用的基础镜像是busybox
,由于golang交叉编译之后只有一个二进制文件,可以直接部署到容器中运行,容器镜像大小几乎等于二进制文件大小。
带来的问题
由于基础镜像太过精简,目前遇到的问题是将时间戳格式化为时间字符串时发现差了8个小时。
尝试过的解决办法
刚开始使用了Location时区相关API,但是部署到容器中发现直接报错了,因为容器中缺少相关的系统调用函数。代码如下:
loc, _ := time.LoadLocation("Asia/Shanghai")
time.Now().In(loc).Format("2006-01-02 15:04:05")
目前应用会部署到docker容器中,故处理办法比较原始,直接在Time对象上添加8个小时来解决时差问题。代码如下:
time.Now().Add(time.Hour * 8).Format("2006年01月02日 15:04"),
暂时解决了这个问题。