我已经通过在 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

谁能帮我做这件事

最佳答案

我最近花了一些时间来处理 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

关于ruby-on-rails - 如何检查docker容器内的ruby版本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25825736/

10-16 12:09
查看更多