You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker安装nvm时出现'nvm: command not found'错误的求助

问题原因

每个RUN指令都会启动一个独立的Shell进程,进程之间的环境变量完全隔离。你执行RUN source ~/.nvm/nvm.sh时,仅在当前进程中加载了nvm的环境变量,但这个变量不会传递到下一个RUN指令的进程里,所以后续执行nvm install时会提示命令找不到。

而手动在容器内操作时,所有命令都在同一个Shell会话中执行,source后的环境变量会持续生效,因此能正常运行。

解决方案

方案1:合并命令到同一个RUN(推荐)

将source、nvm install、nvm use等命令合并到同一个RUN指令中,确保它们在同一个Shell进程内执行:

FROM maven:3-jdk-8

RUN rm /bin/sh && ln -s /bin/bash /bin/sh

RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash \
    && source ~/.nvm/nvm.sh \
    && nvm install 16 \
    && nvm use 16 \
    && nvm alias default 16 # 可选:设置16为默认Node版本,后续启动容器时自动生效

方案2:将nvm初始化加入bash配置文件

把source ~/.nvm/nvm.sh写入~/.bashrc,让每次启动bash时自动加载nvm环境:

FROM maven:3-jdk-8

RUN rm /bin/sh && ln -s /bin/bash /bin/sh

RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash \
    && echo "source ~/.nvm/nvm.sh" >> ~/.bashrc

RUN source ~/.bashrc && nvm install 16 && nvm alias default 16

内容的提问来源于stack exchange,提问作者Jamie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 10:45:35