【问题标题】:Error unknown time zone America/Los_Angeles in time.LoadLocation错误未知时区 America/Los_Angeles 在 time.LoadLocation
【发布时间】:2020-03-24 10:16:51
【问题描述】:

即使CoreOS在timedatectl list-timezones时显示America/Los_Angeles,为什么Docker会抛出错误unknown time zone America/Los_Angeles

当 LoadLocation 调用在容器内运行或任何可以添加到 Docker 文件以便它可以指向 zoneinfo 时,是否需要做其他事情?

来自godoc

LoadLocation 所需的时区数据库可能并不存在于所有系统上,尤其是非 Unix 系统上。 LoadLocation 查找由 ZONEINFO 环境变量命名的目录或未压缩的 zip 文件(如果有),然后查找 Unix 系统上的已知安装位置,最后查找 $GOROOT/lib/time/zoneinfo.zip。

【问题讨论】:

    标签: docker go time dockerfile


    【解决方案1】:

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

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

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

    【讨论】:

    • 你试过这个:coreos.com/os/docs/latest/configuring-date-and-timezone.html 吗?你也可以使用 alpine linux,而不是 coreos。
    • 如果不设置此环境变量就无法运行 go 可执行文件,这似乎有点脆弱!如果我们使用的是 golang docker 镜像构建的产品,我们还需要设置哪些其他环境变量?
    • 您也可以添加到 Dockerfile RUN apk add --no-cache tzdata,之后似乎可以工作。
    猜你喜欢
    • 2014-06-08
    • 2019-09-01
    • 2020-09-28
    • 2012-04-22
    • 2019-10-24
    • 2019-03-07
    • 2021-02-04
    • 2022-01-25
    • 2011-09-30
    相关资源
    最近更新 更多