繁体   English   中英

如何在没有root用户的情况下在rails上运行ruby的docker容器?

[英]How to run a docker container for ruby on rails without root user?

我正在尝试在docker上运行没有root用户的RoR项目。 我正在使用官方ruby映像,当我使用非root用户执行bundle install时一切正常,但是当我运行rails s -b '0.0.0.0'或者bundle exec rails s -b '0.0.0.0'我得到这个错误:

/usr/local/bundle/gems/bootsnap-1.3.2/lib/bootsnap/compile_cache/iseq.rb:37:in`fetch':权限被拒绝 - bs_fetch:atomic_write_cache_file:open(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文档,您会看到:

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

“此行”是指在config/boot.rb require 'bootsnap/setup'

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM