使用openjdk:8-jdk-alpine
镜像部署java应用时会出现时区不一致的问题。
自己封装一个镜像,解决时区问题,并供之后使用。
拉取 openjdk:8-jdk-alpine 镜像
[root@VM-0-9-centos ~]# docker pull openjdk:8-jdk-alpine
运行并进入容器
[root@VM-0-9-centos ~]# docker run -itd --name openjdk8-win openjdk:8-jdk-alpine
[root@VM-0-9-centos ~]# docker exec -it openjdk8-tz sh
增加安装 tzdata 包。
Time Zone Database,简称tz或tzinfo,是一组表示地球上各地的时间历史的代码和数据,目前由IANA维护。
IANA会根据各地政体的变化而定期更新关于时区边界、UTC和夏令时等的规则。
而tzdata是Time Zone Database发布的组件之一,其他还有tzcode等。
tzdata软件包,全称time zone and daylight-saving time(DST) data,供各个Linux系统安装以读取Time Zone Database中数据。
/ # apk update
/ # apk add tzdata
修改时间
/ # cd /usr/share/zoneinfo/
/usr/share/zoneinfo # ls
Africa Atlantic Canada EST5EDT Factory GMT-0 Iceland Japan MST7MDT PRC ROC US Zulu zone1970.tab
America Australia Chile Egypt GB GMT0 Indian Kwajalein Mexico PST8PDT ROK UTC iso3166.tab
Antarctica Brazil Cuba Eire GB-Eire Greenwich Iran Libya NZ Pacific Singapore Universal posixrules
Arctic CET EET Etc GMT HST Israel MET NZ-CHAT Poland Turkey W-SU right
Asia CST6CDT EST Europe GMT+0 Hongkong Jamaica MST Navajo Portugal UCT WET zone.tab
/usr/share/zoneinfo # cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
/usr/share/zoneinfo # date
Sun Oct 18 18:57:14 CST 2020
这里系统时间虽然修改过来了,但是之后运行Java程序时,时间任然相差8小时,所以需要添加如下
修改Java时区
/usr/share/zoneinfo # echo Asia/Shanghai > /etc/timezone
删除安装包
/usr/share/zoneinfo # apk del tzdata
(1/1) Purging tzdata (2020a-r0)
Executing busybox-1.29.3-r10.trigger
OK: 103 MiB in 54 packages
sh: getcwd: No such file or directory
/var/cache/apk # rm -rf /tmp/* /var/cache/apk/*
封装镜像
docker commit [选项] <容器ID或容器名> [<仓库名>[:<标签>]]
[root@VM-0-9-centos ~]# docker commit -a "author name" ade26f97bede openjdk8-tz:latest