我正在使用 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 作业本身的参数。
我已经将所有这些用于不同的目的。
关于ruby-on-rails - 如何使用sidekiq worker访问Dokku服务器上rails应用程序中上传的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30886189/