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对应不同的设置方式