go - Go 在 docker 容器中找不到 /usr/share/zoneinfo
问题描述
在我调用的 Go 程序中time.LoadLocation("Europe/Berlin")
,它返回一条错误消息open /usr/local/go/lib/time/zoneinfo.zip: no such file or directory
,即使在容器中(alpine:3.9
安装了 tzdata 运行)/usr/share/zoneinfo/Europe/Berlin
存在,并且根据文档,它应该优先于 zip 文件。相同的程序在我的机器(Arch Linux)上找到该文件。可执行文件在我的机器上静态链接,然后复制到容器中。我尝试了 Go 1.11.5 和 1.10.3。
我构建了可执行文件:
CGO_ENABLED=0 go build -a -ldflags "-s" -o gocake_static
我正在寻找任何可以帮助我识别问题的想法。
解决方案
如果您只使用一个静态区域信息。也许FixedZone
可以解决你的问题。
它不需要 timezone.zip,因此无需在 Dockerfile中下载zoneinfo.zip
和设置 env 。ZONEINFO
例如
loc := time.FixedZone("Europe/Berlin", 1*60*60)
fmt.Println(time.Now().In(loc).Format("2006-01-02 15:04:05"))
推荐阅读
- javascript - React + Firestore 读取数据无限结果
- java - 为什么在检测到的 ArUco 标记上不能正确渲染 3D 模型?
- javascript - 在数组中寻找素数以存储在Javascript中的另一个数组中
- javascript - 在 for 循环中添加新的计数器变量
- html - 使用python登录leetcode时出错得到响应403
- facebook - 制作 Facebook 重新抓取 URL
- python - 尝试对传入的数据求和
- javascript - jQuery过滤多个数据属性
- java - (JAVA) 具有复杂输入参数的 Spark SQL UDF
- typescript - getElement 不是函数类型脚本