重庆互联网,19年企业互联网解决经验,专业网站开发、移动端开发、微信端开发、小程序开发!
重庆网络推广公司

微信云托管教程(120):时区设置

作者:重庆互联网小徐 发布时间:2024-03-21 浏览:19818 赞(1950 收藏 评论(0)

容器系统时间默认为 UTC 协调世界时间 (Universal Time Coordinated),与本地所属时区 CST (上海时间)相差 8 个小时。当需要获取系统时间用于日志记录、数据库存储等相关操作时,容器内时区不一致问题将会带来一系列困扰。

在构建基础镜像或在基础镜像的基础上制作自定义镜像时,在 Dockerfile 中创建时区文件即可解决单一容器内时区不一致问题,且后续使用该镜像时,将不再受时区问题困扰。

前期判断

首先需要判断自己的 FROM 镜像是什么系统,来确定接下来执行的步骤是什么。

举个例子,一个dockerfile文件内容如下:

FROM node:12-slimWORKDIR /usr/src/appCOPY package*.json ./RUN npm install --only=productionCOPY . ./CMD [ "node", "index.js" ]

我们可以通过在自己电脑安装docker,运行如下命令查看

# node:12-slim替换成自己的docker pull node:12-slim
docker run -it node:12-slim bash# 进入容器内部cat /etc/issue

就可以看到此镜像对应的系统类型

Debian GNU/Linux 9 \n \l

如果你已经部署了一次服务在微信云托管中,可以前往服务进入实例,运行以下命令,也可以查看到对应的类型。

如果你的Dockerfile中有多个FROM,则取最后一次出现的FROM来判断。

添加时区命令

按照上一步骤确定的系统,选择下述正确的命令添加到你原有Dockerfile中CMD上面,在FROMCMD之间,如果你的构建过程中有用到时区,则在需要时区的命令之前添加。

1. Alpine

alpine比较精简,需要安装tzdata,可以将你自己的安装步骤与下属步骤合并

ENV TZ Asia/Shanghai
RUN apk add tzdata && cp /usr/share/zoneinfo/${TZ} /etc/localtime && echo ${TZ} > /etc/timezone && apk del tzdata

如果报超时等错误,需要在前面配置软件源,添加如下代码

set -eux && sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories

如果设置完时区仍然不对,请删除最后的 apk del tzdata 重新打包上传

2. Debian

ENV TZ=Asia/Shanghai \
    DEBIAN_FRONTEND=noninteractive

RUN ln -fs /usr/share/zoneinfo/${TZ} /etc/localtime && echo ${TZ} > /etc/timezone && dpkg-reconfigure --frontend noninteractive tzdata && rm -rf /var/lib/apt/lists/*

上述例子中,就变成如下:

FROM node:12-slimENV TZ=Asia/Shanghai \
    DEBIAN_FRONTEND=noninteractiveRUN ln -fs /usr/share/zoneinfo/${TZ} /etc/localtime && echo ${TZ} > /etc/timezone && dpkg-reconfigure --frontend noninteractive tzdata && rm -rf /var/lib/apt/lists/*WORKDIR /usr/src/appCOPY package*.json ./RUN npm install --only=productionCOPY . ./CMD [ "node", "index.js" ]

3. Ubuntu

Ubuntu 基础镜像中没有 tzdata 包,所以下述命令使用apt安装了一下,如果你的原有dockerfile中有apt安装步骤,需要整合一下代码。

ENV TZ=Asia/Shanghai \
    DEBIAN_FRONTEND=noninteractive

RUN apt update && apt install -y tzdata && ln -fs /usr/share/zoneinfo/${TZ} /etc/localtime && echo ${TZ} > /etc/timezone && dpkg-reconfigure --frontend noninteractive tzdata && rm -rf /var/lib/apt/lists/*

4. CentOS

ENV TZ Asia/Shanghai

RUN ln -fs /usr/share/zoneinfo/${TZ} /etc/localtime && echo ${TZ} > /etc/timezone

总结

设置好时区后,可以使用下述命令测试一下

date### 原来 >>> Mon Mar 14 02:36:27 UTC 2022### 修改 >>> Mon Mar 14 10:36:16 CST 2022

上述方法如果有不适用,可以在官方交流群联系我们。


重庆互联网项目从2004年开始为各行各业提供互联网发展解决方案,专业从事网站、小程序、微信公众号、APP、电商平台、系统等互联网平台开发,帮助企业实现从传统行业到互联网的完美转型。截止目前,重庆互联网合作的企业遍布全国各地,19年的开发经验和完善的售后服务体系获得合作客户的高度认可!

关注重庆互联网官方公众号,即可获取粉丝专享福利!

重庆互联网公众号二维码.jpg

网友留言评论
我要评论
评论

欢迎广大用户为此页面进行评价,评价成功将获得积分奖励!

  • 赞(0
    踩(0
重庆网站定制建设
  • 重庆网站建设平台
  • 重庆网站优化公司
  • 重庆网络推广公司哪家好
  • 重庆APP制作公司
版权所有 ©2004-2024 重庆市渝中区圣灵科技信息有限公司 渝ICP备16004600号-14 渝公网安备50010802001420号 电子营业执照
重庆公众号制作哪家好
二维码
联系客服 重庆商城网站建设