【问题标题】:Rails Delayed Job running old version of code in production server with Dokku使用 Dokku 在生产服务器中运行旧版本代码的 Rails 延迟作业
【发布时间】:2019-07-02 23:17:00
【问题描述】:
我有一个在生产环境中配置了 Dokku 的服务器,其中包含 1 个运行 delay_job 的工作人员在后台执行一些代码,但是当我进行部署时,运行延迟作业的代码有一个奇怪的行为,有时运行我部署的新代码,有时在部署之前运行我的旧代码。就好像有两个延迟作业的实例,并且每时每刻都有一个被执行。
在这里阅读一些帖子,我看到延迟作业实现了缓存之类的东西,应该在部署之后和之前清理它,但我没有像在 dokku 中那样找到它。
有谁知道如何让新版本的代码只在worker上运行?
【问题讨论】:
标签:
ruby-on-rails
ruby
delayed-job
dokku
【解决方案1】:
Dokku 实现了zero-downtime deploys。这意味着它不会关闭旧容器,直到检查通过 - 对于 Web 进程类型 - 或经过一段时间 - 对于所有其他的。
可以通过运行以下命令为给定的进程类型禁用此行为:
# for all process types, this will result in downtime during deploys
# replace APP with your app name
dokku checks:disable APP
# for a given process type
# replace APP with your app name
# replace PROCESS_TYPE with the process type for which you'd like to disable it for
dokku checks:disable APP PROCESS_TYPE