在Docker上使用RVM安装Ruby和Rails“找不到path”

我正在编写一个docker文件来在Codenvy上创build一个自定义工作区。 当我创build工作区一切似乎正确安装,但是当工作区打开,我inputruby -v我得到:

bash: ruby: command not found

相同的轨道:

 user@de98ec223612:/projects$ rails -v bash: rails: command not found 

如果我inputrvm list我得到

 user@de98ec223612:/projects$ rvm info ruby-2.4.0: system: uname: "Linux de98ec223612 3.10.0-514.10.2.el7.x86_64 #1 SMP Fri Mar 3 00:04:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux" name: "Ubuntu" version: "16.04" architecture: "x86_64" bash: "/bin/bash => GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)" zsh: " => not installed" remote path: "ubuntu/16.04/x86_64" rvm: version: "rvm 1.29.1 (latest) by Michal Papis, Piotr Kuczynski, Wayne E. Seguin [https://rvm.io/]" updated: "5 minutes 31 seconds ago" path: "/home/user/.rvm" autolibs: "[4] Allow RVM to use package manager if found, install missing dependencies, install package manager (only OS X)." ruby: interpreter: "ruby" version: "2.4.0p0" date: "2016-12-24" platform: "x86_64-linux" patchlevel: "2016-12-24 revision 57164" full_version: "ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-linux]" homes: gem: "/home/user/.rvm/gems/ruby-2.4.0" ruby: "/home/user/.rvm/rubies/ruby-2.4.0" binaries: ruby: "/home/user/.rvm/rubies/ruby-2.4.0/bin/ruby" irb: "/home/user/.rvm/rubies/ruby-2.4.0/bin/irb" gem: "/home/user/.rvm/rubies/ruby-2.4.0/bin/gem" rake: "/home/user/.rvm/rubies/ruby-2.4.0/bin/rake" environment: PATH: "/home/user/.rvm/gems/ruby-2.4.0/bin:/home/user/.rvm/gems/ruby-2.4.0@global/bin:/home/user/.rvm/rubies/ruby-2.4.0/bin:/usr/lib/jvm/java-1.8.0-open jdk-amd64/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/bundle/bin:/usr/lib/postgresql/9.6/bin:/home/user/.rvm/bin" GEM_HOME: "/home/user/.rvm/gems/ruby-2.4.0" GEM_PATH: "/home/user/.rvm/gems/ruby-2.4.0:/home/user/.rvm/gems/ruby-2.4.0@global" MY_RUBY_HOME: "/home/user/.rvm/rubies/ruby-2.4.0" IRBRC: "/home/user/.rvm/rubies/ruby-2.4.0/.irbrc" RUBYOPT: "" gemset: "" 

这看起来像我的东西安装正确。

如果我input/home/user/.rvm/rubies/ruby-2.4.0/bin/ruby -v它显示正确的ruby版本。 /home/user/.rvm/rubies/ruby-2.4.0/bin在PATH中为什么不被search?

这是我的docker文件的相关部分,如果有帮助。

 # Install RVM RUN gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB &&\ echo progress-bar >> ~/.curlrc &&\ \curl -sSL https://get.rvm.io | bash -s stable &&\ /bin/bash -l -c 'source ~/.rvm/scripts/rvm' # Install Ruby RUN /bin/bash -l -c 'rvm requirements' &&\ /bin/bash -l -c 'rvm install ${RUBY_VERSION}' &&\ /bin/bash -l -c 'rvm use ${RUBY_VERSION} --default' &&\ /bin/bash -l -c 'rvm rubygems current' # Install bundler RUN /bin/bash -l -c 'gem install bundler' # Install Rails RUN /bin/bash -l -c 'gem install rails' RUN echo $PATH EXPOSE 3000 WORKDIR /projects CMD /bin/bash -l -c 'source ~/.rvm/scripts/rvm' && sudo service postgresql start && tail -f /dev/null 

获得这些命令而不使用/home/user/.rvm/rubies/ruby-2.4.0/bin的任何帮助将非常感激。

如果您的团队可以接受,那么Eclipse Che为RoR提供的基本dockerfile可能更容易: https : //github.com/eclipse/che-dockerfiles/blob/master/recipes/ruby_rails/Dockerfile

这应该让你的基础知识,并保持最新的社区。 然后,您可以使用任何其他工具,库,所需的代码来扩展它。

我有同样的问题,最终我通过上传一个/root/.bashrc文件来修复它

 source /opt/rvm/scripts/rvm source /etc/profile.d/ruby.sh export PATH=$PATH:/opt/rvm/bin 

带有源代码的行,是由我添加的。 导出是由RVM在安装时添加的。 我的bashrc文件的其余部分是由Debian安装的内容。 我刚刚添加这些行。

我的ruby.sh文件包含

 #!/bin/sh export RUBY_HOME=/opt/rvm/rubies/default 

对我来说,这是诀窍。 当我使用/ bin / bash(非shell)或者通过/ bin / bash -l -c“命令到这里”login时,我的命令rvm和ruby都会响应。 另外,我的RUBY_HOME和GEM_PATH,…都被填满了。

我目前的rubydocker安装可以在这里find: https : //github.com/vindevoy/dockerhub-debian-ruby (来源) https://hub.docker.com/r/vindevoy/debian-ruby/ (图片)