如何检查docker集装箱内的ruby版本

我通过创build下面的docker文件来构builddocker容器

# Select ubuntu as the base image FROM ubuntu # Install nginx, nodejs and curl RUN apt-get update -q RUN apt-get install -qy nginx RUN apt-get install -qy curl RUN apt-get install -qy nodejs RUN echo "daemon off;" >> /etc/nginx/nginx.conf # Install rvm, ruby, bundler RUN curl -sSL https://get.rvm.io | bash -s stable RUN /bin/bash -l -c "rvm requirements" RUN /bin/bash -l -c "rvm install 2.1.0" RUN /bin/bash -l -c "gem install bundler --no-ri --no-rdoc" # Add configuration files in repository to filesystem ADD config/container/nginx-sites.conf /etc/nginx/sites-enabled/default ADD config/container/start-server.sh /usr/bin/start-server RUN chmod +x /usr/bin/start-server # Add rails project to project directory ADD ./ /rails # set WORKDIR WORKDIR /rails # bundle install RUN /bin/bash -l -c "bundle install" # Publish port 80 EXPOSE 80 # Startup commands ENTRYPOINT /usr/bin/start-server 

当我走进容器内,并给出命令ruby -v它会抛出bash:ruby:command not found

有没有人可以帮助我做到这一点

我最近花了一些时间搞乱了RVM,Ruby和Docker。 这个答案可能不是你要找的东西,但无论如何也需要说:如果你不是绝对需要RVM,那么不要在你的docker文件中使用它。 您已经注意到一个缺点:不得不使用/ bin / bash -lc预占命令。 如果你想让一个非root用户在你的Docker容器中运行一个ruby程序,你会遇到另一个不利的方面。 另外,当你运行一个bash shell的时候,你的问题很可能与Docker没有加载.bashrc或者.bash_profile(我忘记了哪一个RVM修改了)有关。

而是使用它从源代码编译Ruby:

 RUN apt-get update RUN apt-get install -yq build-essential openssl libreadline6 libreadline6-dev curl git-core \ zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt-dev \ autoconf libc6-dev ncurses-dev automake libtool bison subversion libmysqlclient-dev ADD http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.2.tar.gz /tmp/ RUN cd /tmp && tar -xzf /tmp/ruby-2.1.2.tar.gz RUN cd /tmp/ruby-2.1.2/ && ./configure --disable-install-doc && make && make install RUN rm -rf /tmp/* ADD http://production.cf.rubygems.org/rubygems/rubygems-2.4.1.tgz /tmp/ RUN cd /tmp && tar -xzf /tmp/rubygems-2.4.1.tgz RUN cd /tmp/rubygems-2.4.1 && ruby setup.rb RUN rm -rf /tmp/* RUN echo "gem: --no-ri --no-rdoc" > ~/.gemrc RUN gem install bundler --no-rdoc --no-ri 

安装RVM后,您没有设置默认的ruby。 尝试安装后设置默认的ruby。

 RUN /bin/bash -l -c "rvm install 2.1.0" RUN /bin/bash -l -c "rvm use 2.1.0 --default"