docker 容器的 timezone 时区设置

文章目录

    这里只列举目前用到的两种系统镜像 ubuntu 和 alpine 的时区配置方法。

    宿主机为 Ubuntu。

    ubuntu 镜像

    这里以 rasa 的 ubuntu 镜像为例:

    timezone 和 localtime 文件映射一下宿主机的就可以了。
    所以,前提是宿主机的配置是正确的。

    action_server:
      image: rasa/rasa:3.4.6-full
      ports:
        - 5055:5055
      environment:
        - ACTION_SERVER_SANIC_WORKERS=4
      volumes:
        - ./:/app
        - /etc/timezone:/etc/timezone
        - /etc/localtime:/etc/localtime
      command:
        - run
        - actions
    

    alpine 镜像

    以 redis Alpine 镜像为例:

    其中 TZ 即为时区值

    redis:
      image: redis:6.2.13-alpine
      restart: on-failure
      environment:
        - TZ=America/Phoenix
      ports:
        - 6379
      command: redis-server --maxmemory 200M --maxmemory-policy allkeys-lru
      volumes:
        - /some_path/redis_data:/data
    

    FROM alpine:latest
    RUN apk add --no-cache tzdata
    ENV TZ=Europe/Copenhagen
    

    参考:

    https://stackoverflow.com/questions/68996420/how-to-set-timezone-inside-alpine-base-docker-image

    /etc/timezone 与 /etc/localtime

    以国内的阿里云服务器上的默认配置为例:

    $ cat /etc/timezone
    Asia/Shanghai
    
    $ ls -lah /etc/localtime
    /etc/localtime -> /usr/share/zoneinfo/Asia/Shanghai
    
    $ date
    Fri 06 Oct 2023 08:47:59 PM CST
    

    而 localtime 文件则是一个二进制文件,不具有可读性。

    $ cat /etc/localtime
    TZif2
         :
          ϏuX
           LMTMDTMSTMWTTZif2
                            ^
                             :ˉ
                               ϏЁuX
                                 LMTMDTMSTMWT
    MST7
    

    参考

    • https://cloud.tencent.com/developer/article/1626811
    • https://www.jianshu.com/p/43e5d72b0f63

    关于作者 🌱

    我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式