这曾经用于设置时区。我在 Alpine 3.9.4 上有一个容器,它在其中起作用:
RUN apk add --no-cache tzdata
ENV TZ America/Chicago
RUN apk del tzdata
我现在正在使用 Alpine Linux v3.10.3 创建 Docker 容器,但它不再起作用。一位用户建议我需要复制到 /etc/localtime:
RUN apk add --no-cache tzdata
ENV TZ America/Chicago
RUN cp /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN apk del tzdata
tzdata
如果删除了,这两个方法都不起作用。但是,如果tzdata
不删除,它们就可以工作。这是为什么呢?
答案1
tzdata 包包含有关时区的信息。它告诉软件时区 CEST 是 UTC+02:00,以及何时使用。
当您删除 tzdata 包时,剩下的只是一个带有字符串的变量。
答案2
您可以尝试设置时区脚本来自阿尔卑斯山会议适合该场景的包。
答案3
因此我将 /etc/localtime 复制回 /usr/share/zoneinfo/$TZ 并且它对我来说工作正常。这是我的解决方案:
ENV TZ America/Chicago
RUN apk add --no-cache --virtual .build-tz tzdata;\
cp /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone;\
apk del .build-tz;\
echo /usr/share/zoneinfo/$TZ | cut -d'/' -f-5 | xargs mkdir -p;\
cp /etc/localtime /usr/share/zoneinfo/$TZ