docker 容器的 timezone 时区设置

更新日期: 2023-10-07 阅读次数: 878 字数: 253 分类: docker

这里只列举目前用到的两种系统镜像 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 聊聊, 查看更多联系方式