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

该问题出现时,由于本人无法通过修改启动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"]

工程目录配置:
关于docker镜像时区设置的问题解决
四、直接在dockerfile文件添加配置:
#设置时区
RUN apk add -U tzdata
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
&& echo ‘Asia/Shanghai’ >/etc/timezone