现象: 设置 TZ 环境变量,并且最后删除 tzdata,创建出来的镜像运行时执行 date 后显示日期还是 UTC 时间。 FROM alpine AS runtime ENV TZ Asia/Shanghai RUN apk add tzdata && cp /usr/share/zoneinfo/${TZ} /etc/localtime \ && echo ${TZ} > /etc/timezone && apk del tzdata 解决方案 不删除 tzdata FROM alpine AS runtime ENV TZ Asia/Shanghai RUN apk add tzdata && cp /usr/share/zoneinfo/${TZ} /etc/localtime \ && echo ${TZ} > /etc/localtime \ && echo Asia/Shanghai > /etc/timezone && apk del tzdata 用官方脚本设置(suggest) 在alpine
Alpine 根据《Setting the timezone》提示,我们可以将以下代码添加到 Dockerfile 中: ENV TZ Asia/Shanghai RUN apk add tzdata Debian Debian 基础镜像 中已经安装了 tzdata 包,我们可以将以下代码添加到 Dockerfile 中: ENV TZ=Asia/Shanghai \ DEBIAN_FRONTEND Ubuntu Ubuntu 基础镜像中没有安装了 tzdata 包,因此我们需要先安装 tzdata 包。 我们可以将以下代码添加到 Dockerfile 中。 ENV TZ=Asia/Shanghai \ DEBIAN_FRONTEND=noninteractive RUN apt update \ && apt install -y tzdata CentOS CentOS 基础镜像 中已经安装了 tzdata 包,我们可以将以下代码添加到 Dockerfile 中。
docker run -it --rm alpine /bin/sh //进入你自己要修改的容器中 / # date Sun May 8 20:46:18 UTC 2016 / # apk add -U tzdata APKINDEX.tar.gz fetch http://dl-cdn.alpinelinux.org/alpine/v3.3/community/x86_64/APKINDEX.tar.gz (1/1) Installing tzdata 根据这个例子我的修改是 docker exec -it b961dccc5807 /bin/sh date //Sat Sep 9 11:26:48 UTC 2017 apk add -U tzdata modify-timezone/] Docker + Alpine 下修改utc时间为cst时间 RUN apk update && apk add ca-certificates && \ apk add tzdata localtime && \ echo "Asia/Shanghai" > /etc/timezone 但是这个还是不能用,所以改成了下面这种形式,然后就可以了 RUN apk add -U tzdata
dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories ENV TZ=Asia/Shanghai RUN apk update \ && apk add tzdata 3.其他系统 基于 Debian 直接设置环境变量即可,默认安装了 tzdata ENV TZ=Asia/Shanghai 基于 Ubuntu FROM ubuntu:bionic ENV TZ=Asia && ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime \ && apt update \ && apt install -y tzdata
apk add -U tzdata # 列出安装的时区文件,验证是否下载成功。 date # Tue Jun 30 11:53:46 CST 2020 # 移除时区文件: apk del tzdata 另外也可以在dockerfile中添加以下内容,完成时区的构建: # Install /rootfs / # Install base packages RUN apk update && apk add curl bash tree tzdata \ && cp -r -f / ubuntu下同步时区 # 进入容器命令行 docker exec -it [container_name | container_id] /bin/bash # 列出安装的时区文件,验证是否存在tzdata ls /usr/share/zoneinfo # 一般是已经安装了 timezone 数据包,如未安装则执行 apt-get install tzdata # 软链接时区文件到localtime ln
Shanghai /etc/localtime && \ dpkg-reconfigure -f noninteractive tzdataAlpine 镜像:FROM alpine:latest# 安装 tzdata ,复制里面的时区文件后删除 tzdata,保持精简RUN apk add --no-cache tzdata && \ cp /usr/share/zoneinfo/Asia/Shanghai /etc /localtime && \ apk del tzdata && \ echo "Asia/Shanghai" > /etc/timezoneCentOS 镜像:FROM centos:latestRUN
/app/goods # 使用更小的运行时镜像 FROM alpine:latest # 安装必要的运行时依赖 RUN apk --no-cache add ca-certificates tzdata ca-certificates:提供HTTPS支持所需的证书 tzdata:提供时区数据支持 --no-cache:避免在镜像中保留apk缓存,进一步减小体积 复制必要文件: COPY --from 5.2 最小化安装包 在Alpine中安装软件包时,只安装必要的依赖: RUN apk --no-cache add ca-certificates tzdata 5.3 使用--no-cache参数 /app/[服务名称] # 运行阶段 FROM alpine:latest RUN apk --no-cache add ca-certificates tzdata WORKDIR /app # /[服务名称]"] 8.2 常见问题排查 构建失败:检查Go版本是否兼容,依赖是否正确 运行时错误:检查是否缺少必要的依赖包,特别是在Alpine环境中 时区问题:确保已安装tzdata并正确设置时区
检查后,发现原来缺少tzdata包于是对Dockerfile进行修改,"安装tzdata包"后如下:FROM anapsix/alpine-java:8u202b08_jdk_unlimitedRUN 4357b436992aStep 2/13 : MAINTAINER abc:1.0 ---> Using cache ---> 7b43d961907cStep 3/13 : RUN apk add --no-cache tzdata APKINDEX.tar.gzfetch http://dl-cdn.alpinelinux.org/alpine/v3.8/community/x86_64/APKINDEX.tar.gz(1/1) Installing tzdata
标准库新增 time/tzdata 包 :Go 1.15 引入了一个新的包 time/tzdata。 time/tzdata:嵌入时区数据Go 程序在处理时区相关的操作时(例如,使用 time.LoadLocation 获取特定时区),默认会依赖操作系统提供的时区数据库。 有两种方式可以启用时区数据的嵌入:方法一:导入 time/tzdata 包在你的 Go 程序中(通常是在 main 包或者其他初始化代码中),使用空白标识符 _ 导入 time/tzdata 包。 package mainimport ( "fmt" "time" // 导入 time/tzdata 包以嵌入时区数据 _ "time/tzdata")func main() 总的来说,time/tzdata 包对于需要跨平台部署、尤其是在可能缺乏系统时区数据的环境中运行,并且需要进行可靠时区计算的 Go 应用程序来说,是一个非常有用的补充。
查看java信息: [root@centos-lx /]# rpm -qa | grep java 显示: tzdata-java-2012c-1.el6.noarch java-1.6.0-openjdk 卸载: [root@centos-lx /]# rpm -e –nodeps tzdata-java-2012c-1.el6.noarch [root@centos-lx /]# rpm -e –nodeps centos-lx /]# rpm -qa | grep jdk 如果出现找不到openjdk source的错误,还可以这样卸载 [root@centos-lx /]# yum -y remove java tzdata-java
输入命令,搜索出所有包含java的文件 搜索出来可能有多个文件, 只删除以java-1.xxxx.0-openjdk或tzdata-java开头的文件,其它的文件不要删除。 1.8.0.201.b09-2.el7_6.x86_64 rpm -e --nodeps javapackages-tools-3.4.1-11.el7.noarch rpm -e --nodeps tzdata-java
新的嵌入式tzdata包:这为时间和时区处理提供了更好的支持。 核心库的多项改进:Go的核心库在这个版本中也获得了许多增强。 详细解读 1. 嵌入式tzdata包 新的tzdata包的加入,使得Go程序可以更加方便地处理不同时区的时间,特别是在那些没有安装tz数据库的系统上。 6. 高核心计数下小对象的改进分配 优化了高并发环境下的内存管理 X.509 CommonName的弃用 增强了证书验证的安全性 GOPROXY代理错误的跳过支持 提升了模块管理的灵活性和健壮性 新的嵌入式tzdata
time.Now().In(cstSh).Format("2006-01-02 15:04:05")) LoadLocation 有个问题,它依赖于 IANA Time Zone Database (简称 tzdata 当前解决方法也有: 1、我们可以自己把tzdata文件放到自己的程序目录中,然后让 time 包能够从我们自己的程序目录中加载时区文件就可以了。 下载tzdata 2、使用时区方式 推荐方式 var cstZone = time.FixedZone("CST", 8*3600) // 东八区 fmt.Println("SH : ",
第一次需要注册一下设备: 123 waydroid shellANDROID_RUNTIME_ROOT=/apex/com.android.runtime ANDROID_DATA=/data ANDROID_TZDATA_ROOT =/apex/com.android.tzdata ANDROID_I18N_ROOT=/apex/com.android.i18n sqlite3 /data/data/com.google.android.gsf
. [>] Installing TZData ... WARNING: Package(s) not found: tzdata [>] Collecting tzdata [>] Downloading tzdata-2025.1-py2.py3-none-any.whl.metadata (1.4 kB) [>] Downloading tzdata-2025.1-py2.py3-none-any.whl (346 kB) [>] Installing collected packages : tzdata [>] Successfully installed tzdata-2025.1 WARNING: Running pip as the 'root' user can result
默认是没有安装 tzdata,因此没有 /usr/share/zoneinfo 目录! 安装tzdata,使用命令 apt-get install -y tzdata 设置时区为 上海,使用以下命令 TZ=Asia/Shanghai ln -snf /usr/share/zoneinfo 时区为上海 ENV TZ Asia/Shanghai # 设置时区,设置utf-8编码,安装django,添加任务计划 RUN apt-get update && apt-get install -y tzdata
执行命令出现如上图所示,需要卸载,反之即不用 卸载JAVA环境 yum -y remove java-1.6.0-openjdk* //表时卸载所有openjdk相关文件输入 yum -y remove tzdata-java.noarch //卸载tzdata-java 2、安装JDK 查看JDK软件包列表 yum search java | grep -i --color jdk 选择版本安装 yum install -y java
Linux时区 Alpine Linux时区非东八区,某些项目需要和北京时间保持同步,因此我们需要对Alpine Linux默认时区做出修改,方法如下: #安装timezone apk add -U tzdata zoneinfo #拷贝需要的时区文件到localtime cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #查看当前时间 date #为了精简镜像,可以将tzdata 删除了 apk del tzdata 修改Alpine Linux软件源 如果是国内网络使用Alpine Linux,可以使用国内镜像源,这样速度更加理想,常用的国内镜像源如下: 清华TUNA镜像源:https
rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Updating : tzdata-java tmpwatch.x86_64 0:2.9.16-5.el6_7 tzdata.noarch 0:2016c-1.el6 tzdata-java.noarch
Dockerfile # 基础镜像 FROM node:alpine # 设置时区 RUN apk --update add tzdata \ && cp /usr/share/zoneinfo /Asia/Shanghai /etc/localtime \ && echo "Asia/Shanghai" > /etc/timezone \ && apk del tzdata