Skip to content

make this plugin work in non-root containers (file permission issues)

For safety reasons and to be able to run within the sidekiq discourse container, we need to have correct file permissions (non-root user access to certain files).

When running this plugin, I get the errors:

discourse 00:29:48.87 INFO  ==> ** Starting Sidekiq **
gem install jsonapi-serializer -v 2.2.0 -i /opt/bitnami/discourse/plugins/fk-discourse-bridge/gems/3.2.7 --no-document --ignore-dependencies --no-user-install
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /opt/bitnami/discourse/plugins/fk-discourse-bridge/gems directory.
    /opt/bitnami/ruby/lib/ruby/site_ruby/3.2.0/rubygems/installer.rb:340:in `rescue in install'
    /opt/bitnami/ruby/lib/ruby/site_ruby/3.2.0/rubygems/installer.rb:289:in `install'
    /opt/bitnami/ruby/lib/ruby/site_ruby/3.2.0/rubygems/resolver/specification.rb:105:in `install'
    /opt/bitnami/ruby/lib/ruby/site_ruby/3.2.0/rubygems/request_set.rb:281:in `block in install_into'
    /opt/bitnami/ruby/lib/ruby/site_ruby/3.2.0/rubygems/request_set.rb:273:in `each'
    /opt/bitnami/ruby/lib/ruby/site_ruby/3.2.0/rubygems/request_set.rb:273:in `install_into'
    /opt/bitnami/ruby/lib/ruby/site_ruby/3.2.0/rubygems/request_set.rb:148:in `install'
    /opt/bitnami/ruby/lib/ruby/site_ruby/3.2.0/rubygems/commands/install_command.rb:207:in `install_gem'
    /opt/bitnami/ruby/lib/ruby/site_ruby/3.2.0/rubygems/commands/install_command.rb:223:in `block in install_gems'
    /opt/bitnami/ruby/lib/ruby/site_ruby/3.2.0/rubygems/commands/install_command.rb:216:in `each'
    /opt/bitnami/ruby/lib/ruby/site_ruby/3.2.0/rubygems/commands/install_command.rb:216:in `install_gems'
    /opt/bitnami/ruby/lib/ruby/site_ruby/3.2.0/rubygems/commands/install_command.rb:162:in `execute'
    /opt/bitnami/ruby/lib/ruby/site_ruby/3.2.0/rubygems/command.rb:326:in `invoke_with_build_args'
    /opt/bitnami/ruby/lib/ruby/site_ruby/3.2.0/rubygems/command_manager.rb:253:in `invoke_command'
    /opt/bitnami/ruby/lib/ruby/site_ruby/3.2.0/rubygems/command_manager.rb:194:in `process_args'
    /opt/bitnami/ruby/lib/ruby/site_ruby/3.2.0/rubygems/command_manager.rb:152:in `run'
    /opt/bitnami/ruby/lib/ruby/site_ruby/3.2.0/rubygems/gem_runner.rb:57:in `run'
    /opt/bitnami/ruby/bin/gem:12:in `<main>'

You are specifying the gem jsonapi-serializer in /opt/bitnami/discourse/plugins/fk-discourse-bridge/plugin.rb, however it does not exist!
Looked for: 
- /opt/bitnami/discourse/plugins/fk-discourse-bridge/gems/3.2.7/specifications/jsonapi-serializer-2.2.0.gemspec
- /opt/bitnami/discourse/plugins/fk-discourse-bridge/gems/3.2.7/specifications/jsonapi-serializer-2.2.0-x86_64-linux.gemspec
- /opt/bitnami/discourse/plugins/fk-discourse-bridge/gems/3.2.7/specifications/jsonapi-serializer-2.2.0-x86_64-linux-gnu.gemspec
stream closed EOF for displeu-prod-discourse/displeu-discourse-prod-ff55f888b-xg4nz (sidekiq)

The other plugin seems to work fine. Until fixed, I need to start up without this plugin at forum.displayeurope.eu.

See also: https://github.com/bitnami/charts/issues/26565#issuecomment-2143951010