关于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

我的是

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

相关推荐
txzz88887 分钟前
CentOS-Stream-10 搭建NTP服务器(一)
linux·服务器·centos·ntp服务
while(1){yan}39 分钟前
SpringIoc
java·spring boot·spring·java-ee
冉佳驹1 小时前
Linux ——— 虚拟地址、页表、物理地址与 waitpid 和进程管理中的核心概念和技术
linux·waitpid·进程程序替换·exit·地址空间·非阻塞轮询·exec系列
苏叶新城1 小时前
SpringBoot 3.5 JPA投影
java·spring boot·后端
最后一个bug1 小时前
CPU的MMU中有TLB还需要TTW的快速查找~
linux·服务器·系统架构
毕设源码-赖学姐2 小时前
【开题答辩全过程】以 基于Springboot的智慧养老系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
小杨同学492 小时前
Linux 从入门到实战:常用指令与 C 语言开发全指南
linux
福尔摩斯张3 小时前
Linux的pthread_self函数详解:多线程编程中的身份标识器(超详细)
linux·运维·服务器·网络·网络协议·tcp/ip·php
m0_488777653 小时前
运用Docker-compose编排部署设备管理平台(包含nginx的https访问)
docker·容器·docker-compose·服务统一管理
ArrebolJiuZhou3 小时前
02arm指令集(一)——LDR,MOV,STR的使用
linux·网络·单片机