SpringBoot 打包成docker镜像时区问题解决

518 阅读1分钟

SpringBoot 项目在通过 Docker 方式部署的时候打包的 docker 镜像的时区默认是UTC+0 而国内主要是UTC+8,也就是东八区的时间。如果不设置时区,会导致我们Java程序中时间的异常。

以下从内置两种不同的JDK去编写我们的Dockerfile

一、openjdk8

Dockerfile

FROM openjdk:8


RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone



ADD spring-boot-demo.jar app.jar
ENTRYPOINT ["java","-Duser.timezone=GMT+8","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

二、openjdk:8-jdk-alpine

FROM openjdk:8-jdk-alpine


ENV TZ=Asia/Shanghai
RUN set -eux; \
    apk add --no-cache --update tzdata; \
    ln -snf /usr/share/zoneinfo/$TZ /etc/localtime; \
    echo $TZ > /etc/timezone \

以上两种jdk对应不同的设置方式