在docker ubuntu / debian上安装rbenv

时间:2014-11-12 05:01:33

标签: ruby docker rbenv

我想在Docker上安装rbenv,这似乎有效,但我无法重新加载shell。

FROM node:0.10.32-slim

RUN \
      apt-get update \
  &&  apt-get install -y sudo

RUN \
      echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers \
  &&  groupadd r \
  &&  useradd r -m -g r -g sudo

USER r

RUN \
      git clone https://github.com/sstephenson/rbenv.git ~/.rbenv \
  &&  echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc \
  &&  echo 'eval "$(rbenv init -)"' >> ~/.bashrc

RUN rbenv # check if it works...

当我跑步时,我得到:

docker build .       

..

Step 5 : RUN rbenv
/bin/sh: 1: rbenv: not found

根据我的理解,我需要重新加载当前的shell,以便我可以安装ruby版本。不确定我是否走在正确的轨道上。

另见: Using rbenv with Docker

2 个答案:

答案 0 :(得分:4)

RUN命令执行/ bin / sh下的所有内容,因此你的bashrc在任何时候都不会被篡改。

使用此

&& export PATH="$HOME/.rbenv/bin:$PATH" \

将rbenv附加到/ bin / sh的PATH。

完整Dockerfile

FROM node:0.10.32-slim

RUN \
      apt-get update \
  &&  apt-get install -y sudo

RUN \
      echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers \
  &&  groupadd r \
  &&  useradd r -m -g r -g sudo

USER r

RUN \
      git clone https://github.com/sstephenson/rbenv.git ~/.rbenv \
  &&  echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc \
  &&  echo 'eval "$(rbenv init -)"' >> ~/.bashrc \
  &&  export PATH="$HOME/.rbenv/bin:$PATH"

RUN rbenv # check if it works...

答案 1 :(得分:1)

我不确定Docker是如何工作的,但似乎你错过了source ~/.bashrc的一个步骤,这阻止了你的rbenv可执行文件PATH。尝试在第一次尝试运行rbenv之前添加它,看看它是否有帮助。

您也可以使用绝对路径解决PATH问题。而不仅仅是rbenv,请尝试运行$HOME/.rbenv/bin/rbenv

如果可行,则表示rbenv已成功安装,并且PATH未正确设置为包含其bin目录。

通过阅读您发布的其他问题,看起来Docker允许您通过PATH命令设置ENV PATH,例如:

ENV PATH $HOME/.rbenv/bin:/usr/bin:/bin

但是你应该确保包含所需的所有路径。