如何在alpine基础的Docker镜像中设置时区?

25
2个回答

80
您需要安装 tzdata 软件包,然后将环境变量 TZ 设置为一个时区。(所有时区的列表)
FROM alpine:latest
RUN apk add --no-cache tzdata
ENV TZ=Europe/Copenhagen

输出

$ docker run --rm alpine date
Tue Aug 31 09:52:08 UTC 2021

$ docker run --rm myimage date
Tue Aug 31 11:52:13 CEST 2021

非常感谢,这个问题今天让我很头疼! - C.K.
3
注意,您可以通过以下方式节省一些镜像大小:RUN apk add --no-cache tzdata - Zidong
我发现在docker-compose上简单地设置一个包含TZ=Europe/Copenhagenenv_file就可以完成工作。至少在基于Python和nginx Alpine的镜像上,不需要安装tzdata - henrikstroem
1
@henrikstroem 在基础的Alpine镜像上尝试一下。它需要tzdata。你已经尝试过的镜像可能已经安装了它。我检查了nginx:alpine,它已经安装了tzdata。 - Hans Kilian

10
这是我的 Dockerfile,它能正常工作:
FROM alpine:latest

# Essentials
RUN apk add -U tzdata
ENV TZ=America/Santiago
RUN cp /usr/share/zoneinfo/America/Santiago /etc/localtime

你需要将'America/Santiago'替换为你的时区。

有必要创建 /etc/localtime 吗?使用 tzdataENV TZ=<zone> 可以正常工作。 - Jesper Grann Laursen
嗨@ JesperGrannLaursen,谢谢你的问题。简单的答案是,对于一些应用程序来说,准确显示指定时区的正确时间是必要的。但是,正如你所说的,这并不是百分之百必要的。这取决于你具体在做什么。我添加了那行代码,因为它适用于我的项目中特定的配置,但如果你想的话,可以将其删除。 - edocollado

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接