如何在docker中安装nvm?

新手上路,请多包涵

我正在构建一个新的 Docker 映像,我正在寻找安装 NVM 以便我可以管理 nodejs。

阅读有关如何安装 NVM 的文档,他们提到您需要获取 .bashrc 文件才能开始使用 NVM。

我试图在 Dockerfile 中进行设置,但到目前为止构建失败并出现错误:

“bash:nvm:找不到命令”

以下是我的 Dockerfile 中的相关行:

 ADD files/nvm_install.sh /root/
RUN chmod a+x  /root/nvm_install.sh
RUN bash -c "/root/nvm_install.sh"
RUN bash -l -c "source /root/.bashrc"
RUN cd /root
RUN bash -l -c "nvm install 0.10.31"

这是尝试构建的输出:

docker build -t nginx_dock 。

 Step 0 : FROM ubuntu
---> 826544226fdc
Step 1 : MAINTAINER dficociello
---> Using cache
---> da3bc340fbb3
Step 2 : RUN apt-get update
---> Using cache
---> 6b6b611feb4f
Step 3 : RUN apt-get install nginx curl -y
---> Using cache
---> 159eb0b16d23
Step 4 : RUN touch /root/.bashrc
---> Using cache
---> 5e9e8216191b
Step 5 : ADD files/nginx.conf /etc/nginx/
---> Using cache
---> c4a4a11296a2
Step 6 : ADD files/nvm_install.sh /root/
---> Using cache
---> b37cba2a18ca
Step 7 : RUN chmod a+x  /root/nvm_install.sh
---> Using cache
---> bb13e2a2893d
Step 8 : RUN bash -c "/root/nvm_install.sh"
---> Using cache
---> 149b49a8fc71
Step 9 : RUN bash -l -c "source /root/.bashrc"
---> Running in 75f353ed0d53
---> 0eae8eae7874
Removing intermediate container 75f353ed0d53
Step 10 : RUN cd /root
---> Running in feacbd998dd0
---> 284293ef46b0
Removing intermediate container feacbd998dd0
Step 11 : RUN bash -l -c "nvm install 0.10.31"
---> Running in 388514d11067
bash: nvm: command not found
2014/09/17 13:15:11 The command [/bin/sh -c bash -l -c "nvm install 0.10.31"] returned a non-zero         code: 127

我对 Docker 还很陌生,所以我可能缺少一些编写 Dockerfile 的基础知识,但到目前为止,我所做的所有阅读都没有向我展示一个好的解决方案。

原文由 David Ficociello 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.7k
1 个回答

2022年更新:

基于 https://stackoverflow.com/a/60137919/2047472 我想出了:

 FROM python:3.10

RUN touch .profile

SHELL ["/bin/bash", "--login", "-i", "-c"]
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
SHELL ["/bin/bash", "--login", "-c"]

RUN nvm install
RUN node -v
RUN npm -v

  • 如果您使用 .nvmrc 并使用 source 来初始化 nvm,请注意当 .nvmrc 存在于当前目录或父目录中时,nvm.sh 中的 错误 会导致它退出并返回代码 3
  • 我不得不触摸 .profile 因为它不存在,否则在后续的 RUN 命令中未激活 nvm
    • touch .bashrc

原文由 AndyTheEntity 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题