如果删除 tzdata,Alpine Linux 时区将不会保留

如果删除 tzdata,Alpine Linux 时区将不会保留

这曾经用于设置时区。我在 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

相关内容