为了账号安全,请及时绑定邮箱和手机立即绑定

time.LoadLocation 中出现未知时区 America/Los_Angeles 错误

time.LoadLocation 中出现未知时区 America/Los_Angeles 错误

Go
繁星点点滴滴 2023-08-07 15:11:15
即使通过 CoreOS 在 timedatectl list-timezones 时显示 America/Los_Angeles ,为什么 Docker 会抛出错误未知时区 America/Los_Angeles?当 LoadLocation 调用在容器内运行时,是否还需要做其他事情或可以添加到 Docker 文件中的任何内容,以便它可以指向 zoneinfo ?LoadLocation 所需的时区数据库可能并不存在于所有系统上,尤其是非 Unix 系统。LoadLocation 查找由 ZONEINFO 环境变量命名的目录或未压缩的 zip 文件(如果有),然后查找 Unix 系统上的已知安装位置,最后查找 $GOROOT/lib/time/zoneinfo.zip。
查看完整描述

3 回答

?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

对于任何寻找答案的人来说,这对我有帮助。

将这两行添加到 docker 文件中(如果是 2 阶段构建,则为最终)

ADD https://github.com/golang/go/raw/master/lib/time/zoneinfo.zip /zoneinfo.zip
ENV ZONEINFO /zoneinfo.zip


查看完整回答
反对 回复 2023-08-07
?
四季花海

TA贡献1811条经验 获得超5个赞

大卫·托马斯的回答对我很有帮助:

RUN apk add --no-cache tzdata


查看完整回答
反对 回复 2023-08-07
?
炎炎设计

TA贡献1808条经验 获得超4个赞

希望你们都安全!go test time我遇到了(或go test all)失败的问题

panic: cannot load America/Los_Angeles for testing: unknown time zone America/Los_Angeles; you may want to use -tags=timetzdata

看起来测试试图zoneinfo.zip从不存在的(硬编码?)目录中读取文件/usr/lib/go-1.18/lib/time。我找到了一个解决方法并将其添加到我的Containerfile/中Dockerfile。如果您有更优雅的解决方案,请告诉我。😄

使用版本:

  • go版本go1.18.1 linux/amd64

  • Ubuntu 22.04.1 LTS

Containerfile / Dockerfile 中的解决方法:

RUN mkdir -p /usr/lib/go-1.18/lib/time

ADD https://github.com/golang/go/raw/master/lib/time/zoneinfo.zip /usr/lib/go-1.18/lib/time/zoneinfo.zip

RUN chown -R openvscode-server:openvscode-server /usr/lib/go-1.18/lib/time


查看完整回答
反对 回复 2023-08-07
  • 3 回答
  • 0 关注
  • 194 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信