关于Linux Docker springboot jar 日志时间不正确 问题解决

使用Springboot项目的jar,制作了一个Docker镜像,启动该镜像后发现容器和容器中的Springboot 项目的日志时间不正确。

解决

查看容器时间命令为:

docker exec 容器id date

1. 容器与宿主机同步时间

在启动镜像时候把操作系统的时间通过"只读"的方式挂载到容器中

添加命令行配置

java 复制代码
-v /etc/localtime:/etc/localtime:ro

比如:

2. Spring boot Jar 启动时增加时区参数

在制作镜像时候,运行jar时指定上时区参数,以便Springboot项目中的日志中能够正确读取到指定时区的时间。中国采用东八区的时区,所以是GMT+8

-Duser.timezone=GMT+8

如:

java 复制代码
java -jar -Duser.timezone=GMT+8 your_application.jar

对应的Dockerfile应该为

java 复制代码
ENTRYPOINT ["java", "-jar", "-Duser.timezone=GMT+8", "/app.jar"]

或是

java 复制代码
CMD java -Duser.timezone=GMT+8 -jar lamp-likang-server.jar

我的是

最后删除镜像,重新打包镜像 启动容器 查看日志就发现同步了

相关推荐
峰顶听歌的鲸鱼8 分钟前
15.docker:容器
运维·笔记·docker·容器·学习方法
是阿漂啊8 分钟前
vscode运行springboot项目
java·spring boot·后端
农夫山泉2号9 分钟前
【docker】——不启用docker的启动命令,使用自己的
docker·容器·eureka
ghfdgbg10 分钟前
13. 配置优先级 + Bean的管理 + SpringBoot核心原理
java·spring boot·后端
Q_Q51100828512 分钟前
python+django/flask+vue基于spark的西南天气数据的分析与应用系统
spring boot·python·spark·django·flask·node.js
凯子坚持 c17 分钟前
Docker实战指南:MySQL、Redis与C++环境的深度容器化部署
redis·mysql·docker
Dolphin_Home18 分钟前
【实用工具类】NullSafeUtils:一站式解决Java空值安全与通用操作(附完整源码)
java·网络·spring boot·后端·spring
Mr_sun.22 分钟前
Docker中安装软件汇总(留存版)
运维·docker·容器
Q_Q51100828524 分钟前
python+springboot+django/flask基于深度学习的旅游推荐系统
spring boot·python·django·flask·node.js·php
询问QQ:48773927830 分钟前
用NSGA - II算法在Matlab中实现微电网多目标优化调度
linux