Docker Alpine镜像时区方法

alpine linux时区设置,Docker Alpine镜像时区问题完美解决方案

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

解决方法:

方案1. 修改Dockerfile

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

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

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

文档链接:

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

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

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

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

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

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

查看是否正常运行

date -R

参考文档:

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

相关资源:alpinelinuxdocker容器时区修改.pdf-互联网文档类资源-优快云文库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值