关于docker镜像时区设置的问题解决

当无法通过启动命令修改Docker镜像时区时,可以通过重新打包镜像并配置Dockerfile来解决。在Dockerfile中添加ENV和RUN指令设置时区,但发现对于Alpine版本的镜像,需要额外复制zoneinfo文件。最后,通过apk添加tzdata并复制时区文件到/etc/localtime成功解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

该问题出现时,由于本人无法通过修改启动docker镜像命令方式去修改镜像的时区,因此通过重新打包镜像文件的方式来处理

一、在网上搜索相关dockerfile文件配置时区信息,在配置中添加:
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
重新配置完成,打包镜像启动成功后进入镜像管理中使用date命令还是没有修改时区成功

二、重新定位问题是创建启动docker镜像的容器是Alpine版本(可在容器中使用cat /etc/issue 查看),是没有/usr/share/zoneinfo路径和相关文件的,基于此问题,我从其他linux系统中复制完整的zoneinfo文件夹下的所有文件信息,在dockerfile文件中另外增加配置该目录的命令,如下:
COPY zoneinfo /usr/share/zoneinfo/
注:dockerfile 和zoneinfo在同级目录下,可以根据自己的实际情况进行zoneinfo路径的存放,保证能够复制时能够找到这个路径就可以
重新打包镜像和发布,进入镜像容器后使用date命令,时区修改成功

三、附dockerfile文件和工程目录配置信息:
dockerfile配置:

FROM anapsix/alpine-java:8_server-jre_unlimited
MAINTAINER t
#挂载的路径
RUN mkdir -p /rdp/fms/fms-server/logs
WORKDIR /rdp/fms/fms-server
#将jar打入镜像之中
COPY plugin/jars/ /rdp/fms/fms-server/plugin/jars
COPY rest-config-fms-dx/ /rdp/fms/fms-server/rest-config-fms-dx
ADD fms-server-dx.jar app.jar
#容器向外暴露的端口
EXPOSE 7200
#设置时区
COPY zoneinfo /usr/share/zoneinfo/
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
#入口命令,执行jar
ENTRYPOINT [“java”,"-Djava.security.egd=file:/dev/./urandom","-jar",“app.jar”, “-Dlogback.file=/rdp/fms/fms-server/logs -Dmintha.boot.git-client-path=/rdp/fms/fms-server/rest-config-fms-dx -Dmintha.boot.version-center-product-model=true -Dmintha.boot.jar-plugin-dir=/rdp/fms/fms-server/plugin/jars” ]
CMD ["–spring.profiles.active=test"]

工程目录配置:
在这里插入图片描述
四、直接在dockerfile文件添加配置:
#设置时区
RUN apk add -U tzdata
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
&& echo ‘Asia/Shanghai’ >/etc/timezone

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值