简体   繁体   English

具有docker-compose的节点应用程序中的CRON不触发作业

[英]CRON in node application with docker-compose not firing jobs

I am using cron in my node-express application which is perfectly work if run application with 'node app.js' . 我在我的node-express应用程序中使用cron,如果运行带有'node app.js'的应用程序,那将是完美的工作。 Since from I dockertized my app, cron doesn't firing jobs. 自从我将我的应用停靠到桌面以来,cron不会解雇工作。 but if I just start app with node app.js it works well. 但是,如果我仅使用node app.js启动应用程序,它将很好地工作。 I search every where but I get results for 'crontab' Or 'start schedule from dockerfile' only. 我在所有地方搜索,但仅获得“ crontab”或“从dockerfile启动时间表”的结果。 I am new in docker thing. 我是docker方面的新手。 Is there anything I need to add for docker-compose so that it will work from node application ? 我需要为docker-compose添加什么,以便它可以在节点应用程序中工作吗? following is my cron job function. 以下是我的Cron工作职能。

let myJobs = {}
let uniqueJobName = getUniqueId() // generating uniqe id for each job
myJobs[uniqueJobName] = new CronJob({
  cronTime: '* * * * * *',
  onTick: function () {
    // calling my function
    console.log('Invoked')
  },
  start: false
})
myJobs[uniqueJobName].start()

I have find out the issue. 我发现了问题。 Docker run default with UTC time zone. Docker默认运行UTC时区。 I have not provided the timezone in CRON job and I am testing with local timezone. 我尚未在CRON工作中提供时区,我正在使用本地时区进行测试。 We can provide timezone in job like following, 我们可以在工作中提供时区,如下所示,

timezone: 'Asia/Kolkata'

Or 要么

From docker we can add our local files (/etc/timezone and /etc/localtime) as volume in our docker-container. 在docker-container中,我们可以从docker中将本地文件(/ etc / timezone和/ etc / localtime)添加为卷。

volumes:
    - "/etc/timezone:/etc/timezone:ro"
    - "/etc/localtime:/etc/localtime:ro"

Hope it will help someone. 希望它会帮助某人。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM