我想在 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...
Run Code Online (Sandbox Code Playgroud)
当我运行这个时,我得到:
docker build .
..
Step 5 : RUN rbenv
/bin/sh: 1: rbenv: not found
Run Code Online (Sandbox Code Playgroud)
据我了解,我需要重新加载当前的 shell,以便我可以安装 ruby 版本。不确定我是否在正确的轨道上。
另请参阅: 在 Docker 中使用 rbenv
小智 5
RUN 命令执行 /bin/sh 下的所有内容,因此您的 bashrc 在任何时候都不会被评估。
用这个
&& export PATH="$HOME/.rbenv/bin:$PATH" \
Run Code Online (Sandbox Code Playgroud)
这会将 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...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2896 次 |
| 最近记录: |