背景
做了一个抓取数据的任务,定在了凌晨5点,任务调度正常执行,但是看数据总是没有最新的
考虑事务切入点的问题,后来发现问题并不在这,因为手动执行调度时是正常的
在排查问题过程中,发现打印的日志时间不对,但在容器里看,时间是正确的物理机时间,所以就考虑到了应用或JVM时区的问题
经测试,问题解决
环境
使用spring-boot:build-image
打包镜像
原因
在使用spring-boot
插件打包时,是使用Paketo Buildpacks
作为基底构建的目标镜像,有很多默认的参数,其中就有JVM的时区设置
解决方法
只需要将时区声明到自己所在的就好了
-Duser.timezone=Asia/Shanghai
再查询一下日志,日期时间就一致了
附
贴上我自己的插件配置
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<addResources>true</addResources>
<image>
<!-- <builder>openjdk:8-jdk-alpine</builder> -->
<!-- <runImage>openjdk:8-jdk-alpine</runImage> -->
<name>registry.cn-qingdao.aliyuncs.com/mobe/${project.artifactId}:${project.version}</name>
<env>
<BP_JVM_TYPE>JDK</BP_JVM_TYPE>
<BPE_DELIM_JAVA_TOOL_OPTIONS xml:space="preserve"> </BPE_DELIM_JAVA_TOOL_OPTIONS>
<BPE_APPEND_JAVA_TOOL_OPTIONS>-javaagent:/skywalking/agent/skywalking-agent.jar -Dfile.encoding=UTF-8 -Duser.timezone=Asia/Shanghai -Xms${java.memory.min}m -Xmx${java.memory.max}m -XX:-OmitStackTraceInFastThrow -XX:-UseGCOverheadLimit -XX:+HeapDumpOnOutOfMemoryError</BPE_APPEND_JAVA_TOOL_OPTIONS>
</env>
<publish>${mobe.docker.publish}</publish>
</image>
<docker>
<publishRegistry>
<username>${mobe.docker.username}</username>
<password>${mobe.docker.password}</password>
<url>registry.cn-qingdao.aliyuncs.com</url>
<email>${mobe.docker.email}</email>
</publishRegistry>
</docker>
</configuration>
</plugin>
感谢大家的阅读, 如有疑问可以加我微信
评论已关闭