首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Go在docker容器中找不到/usr/share/zoneinfo

问题描述:Go在docker容器中找不到/usr/share/zoneinfo。

回答: 这个问题是由于在Docker容器中缺少时区信息导致的。在Docker容器中,默认情况下是不包含时区信息的,因此Go程序在运行时无法找到/usr/share/zoneinfo目录。

解决这个问题的方法是在Docker容器中添加时区信息。可以通过在Dockerfile中添加以下命令来实现:

代码语言:txt
复制
FROM golang:latest
RUN apt-get update && apt-get install -y tzdata
ENV TZ=Asia/Shanghai

上述Dockerfile中,首先使用golang:latest作为基础镜像,然后通过apt-get命令安装tzdata包,该包包含了时区信息。最后通过ENV命令设置时区为"Asia/Shanghai",你可以根据自己的实际需求设置时区。

另外,如果你使用的是腾讯云的容器服务,可以使用腾讯云提供的容器服务产品TKE(Tencent Kubernetes Engine),它提供了完整的容器化解决方案,包括时区设置等。你可以参考TKE产品介绍了解更多信息。

总结: 在Docker容器中找不到/usr/share/zoneinfo的问题可以通过在Dockerfile中添加时区信息来解决。另外,腾讯云的容器服务产品TKE也提供了完整的容器化解决方案。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

容器Go应用--基础镜像的未知时区问题

Go开发的应用程序的一个优势在于,可以从"零"开始构建应用的Docker镜像,镜像仅需要包含Go应用程序编译后的二进制文件,不需要额外安装其他执行环境。...常用的alpine镜像(alpine是专门为容器设计的小型Linux发行版)存在一个安全漏洞,该漏洞为大量生产容器留下了空的root用户密码,所以如果你的的Go应用程序没有alpine(或任何其他操作系统...// Many systems use /usr/share/zoneinfo, Solaris 2 has // /usr/share/lib/zoneinfo, IRIX 6 has /usr/lib.../locale/TZ. var zoneSources = []string{ "/usr/share/zoneinfo/", "/usr/share/lib/zoneinfo/",.... ### 下面这行是新加的 COPY --from=build /usr/share/zoneinfo /usr/share/zoneinfo ENV TZ=Asia/Shanghai CMD [

2.6K10

docker的多阶段构建

/main 直接go run运行或者编译main.go成二进制之后,运行二进制 如何放到docker运行?...通过以上的案例,我们得出2个方案: 1:编译一个带go环境的容器,直接执行go程序,或者进容器编译即可 2:先编译成二进制,然后把二进制文件放到一个最小的镜像执行 很明显,第二种方案适合直接运行二进制的场景...: FROM alpine:latest RUN apk add -U tzdata RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime...自己手动运行 运行脚本后输出: docker多阶段构建 docker的新版本,直接支持了dockerfile多阶段构建: 创建一个新的Dockerfile.new文件: FROM golang...RUN apk add -U tzdata RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime COPY --from=build-env

89420
  • 这些关于 Golang timezone 时区的坑, 我已经帮你踩过了

    可以程序任意位置被导入。导入后, 如果程序 找不到本地 时区文件, 就会使用该库的数据。 本地 指的是 运行环境, 可能是实际的服务器, 也可能是容器。 通常, 应该在 main.go 中被导入。...import (  _ "time/tzdata" ) 老版本(1.15)以前并不包含时区信息, 通常会在容器化的时候单独处理时区问题。...COPY --from=build /usr/share/zoneinfo /usr/share/zoneinfo ENV TZ=Europe/Berlin CMD ["/myapp"] 2. time.Parseand...设置时区 到目前为止, 我还是只能老老实实去 运行环境 操作, 设置 **环境变量 TZ**。 export TZ=Asia/Shanghai 具体可以参考 容器设置时区原来这么简单[1]。...参考资料 [1] 容器设置时区原来这么简单: https://tangx.in/posts/2022/12/21/docker-container-set-timezone/ 互相吹捧, 共同进步

    94450

    这些关于 Golang timezone 时区的坑, 我已经帮你踩过了

    可以程序任意位置被导入。导入后, 如果程序 找不到本地 时区文件, 就会使用该库的数据。 本地 指的是 运行环境, 可能是实际的服务器, 也可能是容器。 通常, 应该在 main.go 中被导入。...import ( _ "time/tzdata" ) 老版本(1.15)以前并不包含时区信息, 通常会在容器化的时候单独处理时区问题。...COPY --from=build /usr/share/zoneinfo /usr/share/zoneinfo ENV TZ=Europe/Berlin CMD ["/myapp"] 2. time.Parse...设置时区 到目前为止, 我还是只能老老实实去 运行环境 操作, 设置 **环境变量 TZ**。 export TZ=Asia/Shanghai 具体可以参考 容器设置时区原来这么简单[1]。...参考资料 [1] 容器设置时区原来这么简单: https://tangx.in/posts/2022/12/21/docker-container-set-timezone/

    2.2K20

    DockerK8s 解决容器内时区不一致方案

    文章目录 1、背景介绍 2、环境、软件准备 3、Dockerfile 处理 4、容器启动时处理 5、进入容器内处理 6、k8s 解决容器时间不一致 1、背景介绍 我们知道,使用 docker...4、容器启动时处理 除了 Dockerfile 修改配置方式外,我们还可以容器启动时通过挂载主机时区配置到容器内,前提是主机时区配置文件正常。...# date Wed Mar 6 16:42:38 CST 2019 # 或者挂载本地 /usr/share/zoneinfo/Asia/Shanghai 到容器内覆盖配置 $ docker run...:52 CST 2019 以上两种方式,其实原理都一样, Centos 系统,/usr/share/zoneinfo/Asia/Shanghai 和 /etc/localtime 二者是一致的,我们一般会将二者软连接或者直接...etc/localtime && ln -sv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime '/etc/localtime' -> '/usr/share

    4K20

    Docker 容器捕获信号

    我们可能都使用过 docker stop 命令来停止正在运行的容器,有时可能会使用 docker kill 命令强行关闭容器或者把某个信号传递给容器的进程。...这些操作的本质都是通过从主机向容器发送信号实现主机与容器中程序的交互。比如我们可以向容器的应用发送一个重新加载信号,容器的应用程序接到信号后执行相应的处理程序完成重新加载配置文件的任务。...本文将介绍 docker 容器捕获信号的基本知识。 信号(linux) 信号是一种进程间通信的形式。一个信号就是内核发送给进程的一个消息,告诉进程发生了某种事件。...下面我们通过一个 nodejs 应用演示信号容器的工作过程。...接下来我们将介绍以不同的方式容器运行程序时信号的处理情况。

    2.7K20

    Docker 容器编辑文件

    我希望每次docker容器安装vi的时候谁会给我1美元...我想要一个在运行的docker容器编辑文件的更简单的方式。首先,尝试避免编辑文件,这违背了容器的哲学理念(见最后一段)。...Zedrem 打包在docker镜像:sequenceiq/zedapp 这里有一个脚本,帮助本地运行zed服务器,目标容器运行zed客户端: zed 安装docker镜像和shell脚本: docker...run --rm \   -v /usr/local/bin:/target \   -v /usr/local/bin/docker:/usr/local/bin/docker \   -v /var...– copy(复制)选择的容器并启用 ,最后输出zedrem会话的远程链接。...如果你真的需要在docker容器编辑文件,请使用卷。 如果你已经启用了一个容器,并且有问题的文件又不在一个卷上,这个方法还是很好用的。

    5.4K50

    个人单机服务器微服务实践

    前言 虽然去年就已经开始接触微服务, 并且个人服务器运行了起来, 但是都是使用直连模式, 今天正好有空升级go-zero的代码, 同时更新架构 框架 因为去年用的就是go-zero, 今天只是更新的版本...RUN go env -w GO111MODULE=on RUN go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/,direct RUN go.../share/zoneinfo/Asia/Shanghai /usr/share/zoneinfo/Asia/Shanghai ENV TZ Asia/Shanghai WORKDIR /app COPY.../main"] 单机部署同一个服务多份, 端口会占用, 所以会动态获取一个可用的端口, 然后go-zero启动时使用这个生成的端口(而不是配置文件的) func GetAvailablePort()...build参数使用 SERVICE_NUMBER 就是启动多少个容器, 伪代码如下 script { def count = SERVICE_NUMBER.toInteger(); echo

    15510

    基于Dockerfile构建容器镜像的最佳实践

    /share/zoneinfo/Asia/Shanghai /etc/localtime RUN echo "Asia/Shanghai" > /etc/timezone 合并后,一层 RUN apk...add tzdata \ && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && echo "Asia/Shanghai"...daemon xxxMB,这就表示将当前工作目录下的文件及目录都作为了构建上下文 前面提到可以RUN指令添加--no-cache不使用缓存,同样也可以执行docker build命令时添加该指令以镜像构建时不使用缓存...设置通用的字符集 # Set lang ENV LANG "en_US.UTF-8" 4.2 时区校正 这个问题更多内容可以参考我之前的文章 k8s环境下处理容器时间问题的多种姿势 Dockerfile...设置通用的时区 # Set timezone RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && echo "Asia

    2K40

    Go处理时区

    如何将它们存储在数据库 如何在Go解析它们 当将时区存储在数据库时,请始终遵循一个标准时区,理想的做法是保存UTC时间,并在显示时区时根据需要将其转化为各种时区。...本文中,我将使用DATETIME为例。 现在,另一个也是最重要的事情是读取并将其转化为其他时区。 Go时间时区的转换 下面的代码是展示我们如何在Go语言中做时区的转换....Docker Go语言使用时区 默认的情况下时区信息文件时Go安装的时候已经存在....RUN apk add tzdata 这将把时区信息添加到 alpine 镜像的 /usr/share/timezone....但是也不要忘记设置环境变量 ZONEINFO 的值为 /usr/share/timezone ZONEINFO=/usr/share/timezone 这里有一个参考的示例 Dockerfile

    4.8K20
    领券