我的spring启动应用程序中有一个cron作业,它定期运行。在启用作业时,自动触发作业,并且在Windows tomcat服务器
中按预期工作但是当相同的代码部署到Linux Docker环境中时。作业没有在预定时间被触发。我验证了下面的几个链接。但这并没有解决我的问题。Spring Boot计划任务在docker容器上不工作
处理这个问题的正确方法是什么?
TestJobScheduler.class:
-------------------------
@Configuration
@EnableScheduling
public class TestJobScheduler {
@Value("${test.job.enabled}")
private boolean isTestJobEnabled;
@Scheduled(cron = "${test.cron.expression}")
public void testSchedulerJob() {
if(isTestJobEnabled) {
//Do your work
}
}
}
application.properties:
------------------------
test.job.enabled=true
test.cron.expression=0 0 6 ? * 3,5
我遇到了这个问题,这是因为docker容器自动在UTC时区,尝试运行"date"在容器里看时间
使用ubuntu作为基本镜像来更改时区,在dockerfile中添加:
RUN apt-get update && apt-get -y install tzdata
ENV TZ="insert-time-zone" //Example: America/Chicago
查看这个问题了解更多信息。
添加到Dockerfile:
RUN apt-get update && apt-get -y install tzdata
ENV TZ="America/Araguaina"
RUN date