Ruby on rails 如何在没有root用户的情况下运行RubyonRails的docker容器?

Ruby on rails 如何在没有root用户的情况下运行RubyonRails的docker容器?,ruby-on-rails,ruby,docker,dockerfile,Ruby On Rails,Ruby,Docker,Dockerfile,我正在尝试在docker上没有根用户的情况下运行RoR项目。我使用的是正式的ruby映像,当我使用非root用户执行bundle安装时,一切正常,但是当我运行rails s-b'0.0.0'或bundle exec rails s s-b'0.0.0'时,我得到以下错误: /usr/local/bundle/gems/bootsnap-1.3.2/lib/bootsnap/compile\u cache/iseq.rb:37:在“获取”中:权限被拒绝-bs\u获取:原子写入\u缓存\u文件:打开

我正在尝试在docker上没有根用户的情况下运行RoR项目。我使用的是正式的ruby映像,当我使用非root用户执行
bundle安装时,一切正常,但是当我运行
rails s-b'0.0.0'
bundle exec rails s s-b'0.0.0'
时,我得到以下错误:

/usr/local/bundle/gems/bootsnap-1.3.2/lib/bootsnap/compile\u cache/iseq.rb:37:在“获取”中:权限被拒绝-bs\u获取:原子写入\u缓存\u文件:打开(Errno::EACCES)

这是我的Dockerfile:

FROM ruby:2.6.3

COPY controleGarrafao/ /home/docker/controleGarrafao

RUN apt-get update -qq && apt-get install sudo
WORKDIR /home/docker/controleGarrafao
RUN chmod +x /usr/bin/docker_entrypoint.sh
RUN chmod 777 /usr/local/bin/bundle

RUN useradd -m docker && echo "docker:docker" | \
    chpasswd

RUN echo "docker ALL=(ALL:ALL) NOPASSWD: ALL" | \ 
    tee -a /etc/sudoers

RUN chmod 777 /home/docker

USER docker
RUN bundle install
EXPOSE 3000

有人能帮我吗?

正如您的错误消息所示,问题似乎出在gem
bootsnap

如果您查看以下内容:

请注意,bootsnap会写入tmp/cache,并且该目录必须是 可写的。如果不启动,Rails将无法启动。如果这是 不可接受(例如,您在只读容器中运行,并且 不愿意装入可写tmpdir),应删除此行 或者将其包装在条件中

“此行”指的是
config/boot.rb


因此,您需要确保tmp/cache目录在容器中是可写的,或者从
config/boot.rb

中删除bootsnap行,您可能需要检查项目的权限。我已经检查了我的项目的权限,并在我的项目上运行了
chmod 777
,错误再次发生。我把我的文件放在这里,如果我还有什么可以帮你的,请告诉我。非常感谢您的回复。我指的是更多的
chown
,以查看您的应用程序是否需要对
root
拥有的任何文件进行操作。托比在这里观察得很好。