我有一个NodeJS
应用程序,由REST API和通宵维护(cron
)作业组成。当前正在Debian Linux上运行。
Dockerize的最佳实践是什么?
实现此目标的最佳方法是什么?
答案 0 :(得分:0)
使用官方nodejs
码头工人镜像并使用您的代码构建码头工人镜像。
您需要运行两个容器,一个用于Rest API,另一个用于cron
作业。
对于cron
作业,您不需要conrtab
在docker映像内,而是计划在主机上运行的映像,如下所示:
这将确保按要求的时间间隔运行docker映像。
crontab -e
* */2 * * * docker run -it app/cron-image:v1
答案 1 :(得分:0)
使用节点 cron 包。我添加了一些来自真实项目的代码示例。每小时我都会抓取一个网站。您可以设置时间并将重复任务放置在 cron.schedule
中。您可以将其用作单独的项目或与您的 api 代码结合使用。
import { Scraper } from './controller/scraper.js';
import cron from 'node-cron'
cron.schedule('0 0 */1 * * *', () => {
console.log('running a task every hour');
const scraper = new Scraper()
const data = scraper.getData()
});
Docker 官网不建议使用容器运行进程管理器。但是如果你需要,你可以使用。我使用 pm2 作为流程管理器。它可用于在某些时间间隔内运行应用程序,如果应用程序崩溃,它可以重新启动您的应用程序。
可以帮助您的链接:
我的用例: