如何检查docker容器内的ruby版本

时间:2014-09-13 17:24:23

标签: 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;" >> /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

任何人都可以帮我这么做吗

2 个答案:

答案 0 :(得分:4)

我最近花了一些时间搞乱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

答案 1 :(得分:0)

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

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