我正在使用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作业本身的参数。
我出于不同的目的生产了所有这些。