项目中使用SpringBoot框架,docker部署;默认容器使用UTC时间,跟本地时间相差8个小时,在查看日志的时候时间偏差很不爽,于是参考了网上资料之后做了一些修改,记录下
1.修改Dockerfile文件,加入命令
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
设置了环境变量,之后通过ln -snf 命令创建一个软链接,使得/etc/localtime指向/usr/share/zoneinfo/Asia/Shanghai这个文件;
完整的Dockerfile如下所示
FROM openjdk:8-jre-alpine
ENV SPRING_OUTPUT_ANSI_ENABLED=ALWAYS \
JHIPSTER_SLEEP=0 \
JAVA_OPTS=""
ENV TZ=Asia/Shanghai
# Add a jhipster user to run our application so that it doesn't need to run as root
RUN adduser -D -s /bin/sh jhipster
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
WORKDIR /home/jhipster
ADD entrypoint.sh entrypoint.sh
RUN chmod 755 entrypoint.sh && chown jhipster:jhipster entrypoint.sh
USER jhipster
ADD *.war app.war
ENTRYPOINT ["./entrypoint.sh"]
EXPOSE 8080
2.如果是使用docker-compose,可以直接设置下环境变量即可
environment:
- TZ=Asia/Shanghai
注意,有的容器中没有时区的文件,需要把宿主机的挂载过去,可以在app.yml文件中添加这样一个挂载的命令
volumes: - /usr/share/zoneinfo/Asia/:/usr/share/zoneinfo/Asia/