yeg*_*256 11 ruby bash rvm docker
这就是我的意思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"
Run Code Online (Sandbox Code Playgroud)
工作得很好,但是,当我启动容器时,我看到了:
$ 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]
Run Code Online (Sandbox Code Playgroud)
显然,这不是我想要的.据我了解,问题是默认情况下bash不运行/etc/profile.这就是为什么Ruby不是来自RVM安装的原因.我该如何解决这个问题?
Зел*_*ный 16
长话短说:
docker -it --rm myimage /bin/bash 命令不会将bash作为登录shell启动.
说明:
当你运行$ docker -it --rm myimage /bin/bash它的调用庆典没有-l这使得选项bash行为就好像它被调用作为登录shell,rvm初始化依赖于source-ing /path/to/.rvm/scripts/rvm或/etc/profile.d/rvm.sh和初始化是.bash_profile或.bashrc或任何其他初始化脚本.
我该如何解决这个问题?
如果你想要总是有ruby来自rvm添加-l选项.
这里是一个Dockerfile安装ruby的rvm:
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"]
Run Code Online (Sandbox Code Playgroud)
运行容器:
? 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, Piotr Kuczynski, Wayne E. Seguin [https://rvm.io/]
root@efa1bf7cec62:/# ruby -v
ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-linux]
root@efa1bf7cec62:/#
Run Code Online (Sandbox Code Playgroud)
小智 7
不要使用RUN bash -l -c rvm install 2.3.3。非常sc 您可以通过设置shell命令SHELL [ "/bin/bash", "-l", "-c" ],只需调用即可RUN rvm install 2.3.3。
| 归档时间: |
|
| 查看次数: |
8489 次 |
| 最近记录: |