我想在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版本。我不确定我是否在正确的轨道上。
发布于 2015-02-10 13:23:49
RUN命令执行/bin/sh下的所有内容,因此在任何时候都不会对bashrc求值。
使用这个
&& export PATH="$HOME/.rbenv/bin:$PATH" \这会将rbenv附加到/bin/sh的路径中。
完整的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...发布于 2014-11-12 13:15:25
我不确定Docker是如何工作的,但似乎你遗漏了source ~/.bashrc的一个步骤,这阻止了你在你的PATH中拥有rbenv可执行文件。试着在第一次尝试运行rbenv之前添加它,看看它是否有帮助。
您也可以通过使用绝对路径来解决PATH问题。尝试运行$HOME/.rbenv/bin/rbenv,而不仅仅是rbenv。
如果正常工作,则表明rbenv已成功安装,并且您的PATH未正确设置为包含其bin目录。
从阅读您发布的另一个问题可以看出,docker允许您通过ENV PATH命令设置PATH,例如:
ENV PATH $HOME/.rbenv/bin:/usr/bin:/bin但是你应该确保你包含了你需要的所有不同的路径。
https://stackoverflow.com/questions/26879600
复制相似问题