加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 如何在Docker中正确安装RVM?

发布时间:2020-12-17 04:18:21 所属栏目:百科 来源:网络整理
导读:这是我在Dockerfile中的内容: RUN gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3RUN curl -L https://get.rvm.io | bash -s stableRUN /bin/bash -l -c "rvm requirements"RUN /bin/bash -l -c "rvm install 2.3.3" 工作得很好,但是,当我启
这是我在Dockerfile中的内容:
RUN gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3
RUN curl -L https://get.rvm.io | bash -s stable
RUN /bin/bash -l -c "rvm requirements"
RUN /bin/bash -l -c "rvm install 2.3.3"

工作得很好,但是,当我启动容器时,我看到了这个:

$docker -it --rm myimage /bin/bash
/root# ruby --version
ruby 1.9.3p484 (2013-11-22 revision 43786) [x86_64-linux]
/root# /bin/bash -l -c "ruby --version"
ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-linux]

显然,这不是我想要的.据我了解,问题是bash默认不运行/ etc / profile.这就是为什么Ruby不是来自RVM安装的原因.我该如何解决这个问题?

解决方法

长话短说:

docker -it –rm myimage / bin / bash命令不会将bash作为登录shell启动.

说明:

当你运行$docker -it –rm myimage / bin / bash时,它调用bash而不使用-l选项,这使得bash就像它被调用为登录shell一样,rvm初始化取决于source-ing / path / to /.rvm/scripts/rvm或/etc/profile.d/rvm.sh,初始化在.bash_profile或.bashrc或任何其他初始化脚本中.

How can I fix that?

如果你想要总是从rvm add -l选项获得ruby.

这是一个由rvm安装了ruby的Dockerfile:

FROM debian

ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update -q && 
    apt-get install -qy curl ca-certificates gnupg2 build-essential --no-install-recommends && apt-get clean

RUN gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3
RUN curl -sSL https://get.rvm.io | bash -s
RUN /bin/bash -l -c ". /etc/profile.d/rvm.sh && rvm install 2.3.3"
# The entry point here is an initialization process,# it will be used as arguments for e.g.
# `docker run` command 
ENTRYPOINT ["/bin/bash","-l","-c"]

运行容器:

? docker_templates : docker run -ti --rm rvm 'ruby -v'
ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-linux]
? docker_templates : docker run -ti --rm rvm 'rvm -v'
rvm 1.29.1 (master) by Michal Papis,Piotr Kuczynski,Wayne E. Seguin [https://rvm.io/]
? docker_templates : docker run -ti --rm rvm bash
root@efa1bf7cec62:/# rvm -v
rvm 1.29.1 (master) by Michal Papis,Wayne E. Seguin [https://rvm.io/]
root@efa1bf7cec62:/# ruby -v
ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-linux]
root@efa1bf7cec62:/#

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读