Py学习  »  docker

Docker 生产环境常见的时区配置方法~

脚本之家 • 3 周前 • 117 次点击  
脚本之家 设为“星标⭐”
第一时间收到文章更新
图片
出处:浩道linux(ID:hao_tiyu)
最近不少小伙伴后台私信让浩道出一版关于Docker环境下该如何设置配置时区。那就安排上了,大家有需要参考。

方法一:设置环境变量(最常用,推荐)

docker run -e TZ=Asia/Shanghai your_image
Compose 中:
services:  app:    image: your_image    environment:


    
      - TZ=Asia/Shanghai
Windows / macOS 在 IANA 时区库里支持的时区名都可用,例如 Asia/Shanghai、Asia/Tokyo、Europe/Paris、UTC 等。

方法二:在 Dockerfile 中固化

ENV TZ=Asia/Shanghai

方法三:挂载宿主机时区文件

docker run \  -v /etc/localtime:/etc/localtime:ro \  -v /etc/timezone:/etc/timezone:ro \  your_image
这样容器直接复用宿主机时间,连 JVM、Python 这类不读 TZ 的程序也会跟着走。

方法四:构建镜像时安装 tzdata(Alpine 必须)

Alpine 镜像默认没有时区数据,需要先安装:

RUN apk add --no-cache tzdata && \    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \    echo "Asia/Shanghai" > /etc/timezone
Debian/Ubuntu 镜像用:
ENV DEBIAN_FRONTEND=noninteractiveRUN apt-get update && apt-get install -y tzdata && \    ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \    echo "Asia/Shanghai"


    
 > /etc/timezone

验证

进容器看一眼:

docker exec -it  date# 或docker exec -it  cat /etc/timezone

选择建议

  • 临时调试 / 单容器
     → 方法一最快
  • 生产镜像
     → 方法二 + 方法四(写入 Dockerfile 一劳永逸)
  • JVM、数据库这类对时区敏感的进程
     → 方法三最稳,或者用 -e TZ 启动后再 docker exec 软链 /etc/localtime
图片
  推荐阅读:
  1. 为什么从 PDF 里复制出来的字,总是断成一截一截的
  2. 公司宣布我升主管,请全部门喝了奶茶。发工资那天我发现,工资一分没涨,多了三百块岗位津贴。原来所谓的升职,就是换个名头让你多担责
  3. 互联网最古老的恐惧,被 AI 复活了
  4. 裁员为什么先裁技术人员?网友一针见血
  5. 世界上最奇葩的编程语言,悄悄潜入了每一台Windows电脑!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/202253