我有一个非常简单的Go程序,该程序根据业务规则查询数据库中存在某些不一致的行,然后更新行以使其与业务规则一致。很好,我可以将程序作为二进制文件运行,并且可以正常运行。但是,我还应该将该程序与Docker容器化,并使其每小时运行一次。
我不确定是使程序每小时运行一次的最佳方法。我想做的是使用crontab,但是我不知道如何让Docker与它连接(我仍然是Docker noob,是的,我已经阅读了入门文档,这只是我第一次获得手脏)。
另一个考虑因素是在Go程序本身中执行此操作,但是考虑到我已经给出的要求,我不确定这是否是一种优雅或安全的解决方案。我希望该程序的开销较低,并且这种方法似乎意味着将其编写为守护程序,这似乎有点过分。
那么可以使用主机系统的crontab容器化我的简单程序,并在Dockerfile中定义crontab吗?如果没有,那么解决此问题的正确方法是什么?
答案 0 :(得分:1)
在Dockerfile中定义crontab或在Go应用程序中执行它意味着您必须永久运行服务,因此它将花费CPU /内存而无所事事。
从应用程序中分离作业效率更高,可以有多种方法来完成此操作,具体取决于您使用的是什么:
docker run ...