在docker ubuntu / debian上安装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 -gr -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版本。 不知道我是否在正确的轨道上。

另请参阅: 在Docker中使用rbenv

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 -gr -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... 

我不知道Docker是如何工作的,但似乎你可能错过了一个步骤,在这个步骤中,你需要inputsource ~/.bashrc ,这会阻止你在你的PATH中使用rbenv可执行文件。 在第一次尝试运行rbenv之前尝试添加,看看是否有帮助。

您也可以使用绝对path来解决PATH问题。 试着运行$HOME/.rbenv/bin/rbenv

如果这样的话,表明rbenv已经成功安装了,而且你的PATH没有被正确设置为包含它的bin目录。

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

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

但是你应该确保你包含了所有你需要的各种path。