Ruby on rails 如何在docker容器中检查ruby版本

Ruby on rails 如何在docker容器中检查ruby版本,ruby-on-rails,ruby,bash,docker,Ruby On Rails,Ruby,Bash,Docker,我已经通过创建下面的docker文件来构建docker容器 # 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;" >&

我已经通过创建下面的docker文件来构建docker容器

# 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-notfound


有谁能帮我做这件事吗?

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

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

最近我花了一点时间和RVM、Ruby和Docker打交道。这个答案可能不是您想要的,但无论如何都需要说明:如果您不完全需要RVM,那么不要在docker文件中使用它。您已经注意到了一个缺点:必须使用/bin/bash-lc抢占您的命令。如果您想让非root用户在Docker容器中运行ruby程序,您将遇到另一个不利因素。另外,您的问题很可能与Docker在运行bash shell时未加载.bashrc或.bash_配置文件(我忘记了哪个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

这绝对是我的出路。您可以在一个单独的图像中完成所有耗时的ruby构建,并在此后保持平静。谢谢你的提示!那么为什么我们不能使用
ruby
作为一个经典的bin呢?(为什么我们总是需要bash-c-l)