在Go程序中,我调用time.LoadLocation("Europe/Berlin")
,即使在容器中(安装了tzdata的open /usr/local/go/lib/time/zoneinfo.zip: no such file or directory
运行)alpine:3.9
,它也返回错误消息/usr/share/zoneinfo/Europe/Berlin
,并且,根据{{3}},应优先于zip文件。同一程序在我的计算机上找到文件(Arch Linux)。可执行文件在我的机器上被静态链接,然后复制到容器中。我尝试了Go 1.11.5和1.10.3。
我使用以下命令构建了可执行文件:
CGO_ENABLED=0 go build -a -ldflags "-s" -o gocake_static
我正在寻找可以帮助我确定问题的任何想法。
答案 0 :(得分:0)
如果仅使用一个静态zoneinfo。也许FixedZone
可以解决您的问题。
它不需要timezone.zip,因此无需下载zoneinfo.zip
并在Dockerfile中设置环境ZONEINFO
。
例如
loc := time.FixedZone("Europe/Berlin", 1*60*60)
fmt.Println(time.Now().In(loc).Format("2006-01-02 15:04:05"))