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

即使通过 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。


繁星点点滴滴
浏览 195回答 3
3回答

哆啦的时光机

对于任何寻找答案的人来说,这对我有帮助。将这两行添加到 docker 文件中(如果是 2 阶段构建,则为最终)ADD https://github.com/golang/go/raw/master/lib/time/zoneinfo.zip /zoneinfo.zip ENV ZONEINFO /zoneinfo.zip

四季花海

大卫·托马斯的回答对我很有帮助:RUN apk add --no-cache tzdata

炎炎设计

希望你们都安全!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/amd64Ubuntu 22.04.1 LTSContainerfile / Dockerfile 中的解决方法:RUN mkdir -p /usr/lib/go-1.18/lib/timeADD https://github.com/golang/go/raw/master/lib/time/zoneinfo.zip /usr/lib/go-1.18/lib/time/zoneinfo.zipRUN chown -R openvscode-server:openvscode-server /usr/lib/go-1.18/lib/time
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go