在 docker ubuntu/debian 上安装 rbenv

Rim*_*ian 1 ruby rbenv docker

我想在 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)