Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 寻源RVM路径后,在Docker容器内未找到宝石_Ruby On Rails_Ruby_Ruby On Rails 3_Rubygems_Bundler - Fatal编程技术网

Ruby on rails 寻源RVM路径后,在Docker容器内未找到宝石

Ruby on rails 寻源RVM路径后,在Docker容器内未找到宝石,ruby-on-rails,ruby,ruby-on-rails-3,rubygems,bundler,Ruby On Rails,Ruby,Ruby On Rails 3,Rubygems,Bundler,情景1 因此,我面临的问题就像在构建docker图像之后一样。如果我进入docker容器并执行GEM_PATH=$GEM_HOME GEM list操作,它不会显示在构建映像时安装的所有GEM。它只展示了一些宝石 场景2 如果我没有在Dockerfile中寻找RVM路径。然后,如果我进入docker容器并执行GEM\u PATH=$GEM\u HOME GEM list,那么它将显示所有GEM 有谁能向我解释为什么会发生这种情况,以及我应该如何安装和获取RVM?所以我可以看到容器里所有的宝石。基

情景1

因此,我面临的问题就像在构建docker图像之后一样。如果我进入docker容器并执行
GEM_PATH=$GEM_HOME GEM list
操作,它不会显示在构建映像时安装的所有GEM。它只展示了一些宝石

场景2

如果我没有在Dockerfile中寻找RVM路径。然后,如果我进入docker容器并执行
GEM\u PATH=$GEM\u HOME GEM list
,那么它将显示所有GEM

有谁能向我解释为什么会发生这种情况,以及我应该如何安装和获取RVM?所以我可以看到容器里所有的宝石。基本上,我希望场景1能起作用。谢谢

下面是我的Dockerfile

FROM ruby:2.6.5
RUN apt-get update -qq && apt-get install -y sudo && apt-get install -y build-essential && apt-get install -y apt-utils && apt-get install -y git
RUN gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB && \curl -sSL https://get.rvm.io | sudo bash -s stable --ruby && echo 'source /usr/local/rvm/scripts/rvm' >> /etc/bash.bashrc
RUN /bin/bash -l -c 'gem install bundler -v 1.17.3'
RUN /bin/bash -l -c 'gem install rails --version=5.2.4.1'
WORKDIR /app
RUN bundle config build.nokogiri --use-system-libraries
RUN bundle config set path 'vendor/bundle'
COPY Gemfile Gemfile.lock ./
ARG SSH_KEY
# Make ssh dir
RUN mkdir /root/.ssh/
# Copy ssh
RUN echo "$SSH_KEY" > /root/.ssh/id_rsa && \
   chmod 0600 /root/.ssh/id_rsa
RUN touch /root/.ssh/known_hosts
# Add bitbuckets key
RUN ssh-keyscan bitbucket.org >> /root/.ssh/known_hosts
RUN bundle install
COPY . ./
EXPOSE 80:80
CMD rails s -p 80 -b '0.0.0.0' -e qa

TL;DR:不要在容器内使用rvm\rbenv

当使用容器时,整个过程就是捆绑\打包容器中的所有依赖项。例如,如果您需要ruby 2.9,那么使用安装了ruby 2.9的docker映像,而不是使用[rbenv]()

由于您正在使用,我建议您向它添加
rails
gem,并让bundler管理依赖项

我假设您关心安装rubygems进行缓存的目录,并且我看到您准确地指示bundler什么是rubygem主目录

运行捆绑包配置设置路径“供应商/捆绑包”