使用docker-compose而不是触发作业的节点应用程序中的CRON

时间:2018-01-02 12:05:14

标签: javascript node.js cron docker-compose schedule

我在我的node-express应用程序中使用cron,如果使用'node app.js'运行应用程序,这是完美的工作。从我对我的应用程序进行了对接,cron不会解雇工作。但如果我只是用节点app.js启动应用程序它运行良好。我搜索每个地方,但我得到'crontab'的结果或'仅从dockerfile'开始计划。我是码头工作者的新手。我是否需要为docker-compose添加任何内容以便它可以从节点应用程序中运行?以下是我的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()

1 个答案:

答案 0 :(得分:0)

我已经找到了问题。 Docker默认使用UTC时区。我没有在CRON工作中提供时区,我正在使用当地时区进行测试。 我们可以在下面的工作中提供时区,

timezone: 'Asia/Kolkata'

或者

从docker我们可以在docker-container中添加我们的本地文件(/ etc / timezone和/ etc / localtime)作为卷。

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

希望它会对某人有所帮助。