我想在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版本。不确定我是否走在正确的轨道上。
答案 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
但是你应该确保包含所需的所有路径。