现象
一个更新程序,打上的时间tag跟当前时间不一致,相差8小时。
原因
golang使用了UTC时间。
我的golang代码运行容器,容器中没有设置时区,所以使用的是UTC时间。
解决
尝试在golang中加入全局的时区设置,但是没有成功。
1 | func main() { |
会报错 Error loading location: unknown time zone Asia/Shanghai
经过排查,是依赖的镜像alpine:3.18中没有时区文件。
如果需要使用golang中的loadLocation,需要更换镜像。
最后使用debian:bullseye-slim镜像,并在init中,设置时区为Asia/Shanghai,问题解决。
总结
如果不想在dockerfile中安装tzdata设置默认时区,只能在程序启动时手工指定时区。