使用 Dockerfile 重新启动终端并运行命令

Yea*_*ain 9 linux nvm docker dockerfile

我有一个用于安装 nvm 的 Dockerfile。安装后,我需要使用 nvm 安装节点 5.11。问题是,安装 nvm 后,终端需要关闭并再次运行,以便 nvm 命令可用。

我的 docker 文件如下所示:

# Installing Node
RUN Y | curl https://raw.githubusercontent.com/creationix/nvm/v0.30.2/install.sh | bash
# RUN bash --login
RUN exec bash
RUN nvm install 5.11.0

# Installing Project dependencies
RUN npm install yarn -g
RUN npm install -g webpack@1.13.2
Run Code Online (Sandbox Code Playgroud)

我得到的输出是:

Step 5/9 : RUN exec bash
 ---> Using cache
 ---> cfcdc4c98714
Step 6/9 : RUN nvm install 5.11.0
 ---> Running in 1874de4a7715
/bin/sh: 1: nvm: not found
The command '/bin/sh -c nvm install 5.11.0' returned a non-zero code: 127
Run Code Online (Sandbox Code Playgroud)

https://raw.githubusercontent.com/creationix/nvm/v0.30.2/install.sh | bash关闭并启动终端后运行后,在真正的 linux 中, nvm 命令可用。我如何在 dockerfile 中做到这一点?提前致谢。

Dav*_*aze -2

您应该使用已安装正确版本的 node.js 的预构建节点映像。

当您已经将 Docker 映像作为与可能安装在主机上的其他软件的隔离层时,您不需要像 nvm(rvm、virtualenv 等)这样的工具;您永远不会在单个映像中安装语言运行时的多个版本,而您可能需要在桌面或开发人员系统上安装。

  • 这并不能回答问题。如果用户想要在其 docker 映像中安装 Node,而不是使用节点映像,则无关紧要。 (3认同)