Docker Alpine镜像时区问题完美解决方案

2025-05-27 0 83

最近在使用Docker 部署Java应用时发现时区不对,使用jdk获取当前时间慢8个小时用的是标准时区

解决方法:

方案1. 修改Dockerfile

设置Alpine linux系统时区 查找alpine linux的文档得知可以通过tzdata包来设置时区,在构建docker 镜像的时候,Dockerfile加上这句话:

?

1

2

3

4

5
RUN apk --update add tzdata && \\

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \\

echo "Asia/Shanghai" > /etc/timezone && \\

apk del tzdata && \\

rm -rf /var/cache/apk/*

完整的Dockerfile

?

1

2

3

4

5

6

7

8

9

10
FROM openjdk:8-jre-alpine3.9

RUN apk --update add tzdata && \\

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \\

echo "Asia/Shanghai" > /etc/timezone && \\

apk del tzdata && \\

rm -rf /var/cache/apk/*

# copy the packaged jar file into our docker image

COPY application.jar /application.jar

文档链接:

wiki.alpinelinux.org/wiki/Settin…

方案2. 设置JVM的系统默认时区

在启动Docker镜像的时候,通过设置user.timezone JVM环境变量来设置时区

?

1
java -jar -Duser.timezone=Asia/Shanghai app.jar

方案3. 将宿主机的时区文件挂载进Docker容器中

集群方案用的是K8S,部署时将宿主机的时区文件挂载进Docker容器中

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27
apiVersion: apps/v1

kind: Deployment

metadata:

name: SERVICE_NAME

spec:

replicas: 1

selector:

matchLabels:

app: SERVICE_NAME

template:

metadata:

labels:

app: SERVICE_NAME

spec:

containers:

- name: SERVICE_NAME

image: IMAGE_TAG

imagePullPolicy: Always

ports:

- containerPort: 80

volumeMounts:

- name: tz-config

mountPath: /etc/localtime

volumes:

- name: tz-config

hostPath:

path: /etc/localtime

查看是否正常运行

?

1
date -R

参考文档:

quaded.com/docker-apli…

blog.csdn.net/jeikerxiao/…

到此这篇关于Docker Alpine镜像时区问题解决的文章就介绍到这了,更多相关Docker Alpine镜像时区内容请搜索快网idc以前的文章或继续浏览下面的相关文章希望大家以后多多支持快网idc!

原文链接:https://juejin.cn/post/6953896893206249508

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 行业资讯 Docker Alpine镜像时区问题完美解决方案 https://www.kuaiidc.com/65020.html

相关文章

发表评论
暂无评论