/ / Ako správne nainštalovať RVM v Docker? - rubín, bash, docker, rvm

Ako správne nainštalovať RVM v Docker? - rubín, bash, docker, rvm

To je to, čo mám v mojom 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"

Funguje to v poriadku, keď začnem kontajner, vidím toto:

$ 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]

Je zrejmé, že to nie je to, čo chcem. Pokiaľ chápem, je to problém bash nie je spustená /etc/profile predvolene. To je dôvod, prečo Ruby neprichádza z inštalácie RVM. Ako to môžem opraviť?

odpovede:

8 pre odpoveď č. 1

Dlhý príbeh krátky:

docker -it --rm myimage /bin/bash príkaz nespustí bash ako prihlasovací shell.

vysvetlenie:

Keď spustíte $ docker -it --rm myimage /bin/bash to je invoke bash bez -l možnosť bash správať sa tak, akoby bola použitá ako prihlasovací shell, rvm inicializácie závisí od source-ing /path/to/.rvm/scripts/rvm alebo /etc/profile.d/rvm.sh a že inicializácia je v .bash_profile alebo .bashrc alebo akékoľvek iné inicializačné skripty.

Ako to môžem opraviť?

Ak chcete mať vždy ruby z rvm pridať -l voľba.

Tu je súbor Docker s nainštalovaným súborom ruby podľa 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"]

Spustite kontajner:

➠ 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:/#