我在 Docker 中有一个容器。它具有三个副本。我还有一个调度程序(库),它每分钟运行一次并调用我的代码中的函数。由于我还有两个副本,因此它调用了三次:(
我想要实现的是:
当调度程序调用代码时,第一个副本应执行该任务,其他两个副本应检测到并跳过执行该任务。
我怎样才能实现这个目标?
最佳答案
您应该将这两者分解为各自的服务。
服务 1 将使应用程序运行副本=3
服务 2 将仅运行带有replicas=1 的调度程序
例如,如果您在 Laravel 中,您可以将所有代码放在一个镜像中,只需更改服务命令以在调度程序服务中运行。
如果应用程序还启动了调度程序,并且您不能自己启动调度程序,那么上述方法仍然有效,您只是不会向第二个服务发送任何连接,因为第一个服务正在执行那工作。
关于javascript - 如何在多个 Docker 副本中仅运行一次计划代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50708371/