如何使用 sidekiq worker 访问 Dokku 服务器上 Rails 应用程序中上传的文件



我正在使用sidekiq插件:https://github.com/bigboxsoftware/dokku-sidekiq 在服务器上启用 sidekiq。问题是工作人员无法访问任何应用程序文件夹中的文件。

正如插件自述文件所说

Adds a post-deploy hook to Dokku to automatically deploy a container running a Sidekiq worker

我不确定这意味着我的应用程序和 sidekiq 在不同的容器中运行?我尝试使用挂载的文件夹来存储上传的文件

cat /home/dokku/home/PERSISTENT_STORAGE
/home/dokku/shared/temp:/app/public/temp

但它仍然行不通。

在 rails 控制台中,我可以使用 File.open('public/temp/file') 打开文件,但是一旦使用 Sidekiq::Worker.new('public/temp/file') ,就会引发Errno::ENOENT: No such file or directory错误。

我现在能做什么?

在这种情况下,

Sidekiq运行自己的服务器(容器),从而使其从应用程序服务器沙盒化(即可能在同一物理硬件上运行,也可能不运行)。

如果要在应用程序服务器和 sidekiq 之间"共享"任何内容,则需要与数据库/数据存储共享。这可能是S3,Redis,Postgres或sidekiq作业本身的参数。

我出于不同的目的生产了所有这些。

最新更新