【问题标题】:CRON in node application with docker-compose not firing jobs使用 docker-compose 的节点应用程序中的 CRON 不触发作业
【发布时间】:2023-07-09 05:34:01
【问题描述】:

我在我的 node-express 应用程序中使用 cron,如果使用 'node app.js' 运行应用程序,这将是完美的工作。由于我对我的应用程序进行了 dockertized,因此 cron 不会解雇工作。但如果我只是用 node 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()

【问题讨论】:

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


    【解决方案1】:

    我找到了问题所在。 Docker 默认使用 UTC 时区运行。我没有在 CRON 作业中提供时区,我正在使用本地时区进行测试。 我们可以在工作中提供时区,如下所示,

    timezone: 'Asia/Kolkata'
    

    或者

    通过 docker,我们可以将本地文件(/etc/timezone 和 /etc/localtime)作为卷添加到 docker-container 中。

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

    希望对某人有所帮助。

    【讨论】:

      最近更新 更多