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

Dockerfile中安装指定版本Node.js 14.17.3失败求助

问题原因分析

报错bash: /root/.nvm/nvm.sh: No such file or directory的核心问题:

  • 执行curl | bash安装nvm时,是在镜像默认的普通用户buildagent环境下完成的,nvm默认安装到该用户的~/.nvm目录(即/home/buildagent/.nvm),但你设置的NVM_DIR=$HOME/root/.nvm路径完全错误——$HOME对于普通用户来说是/home/buildagent,这个拼接后的路径根本不存在。
  • 后续用sudo执行nvm命令会切换到root用户,而root用户的home目录下并没有安装nvm,自然找不到脚本文件。
修复后的Dockerfile
FROM jetbrains/teamcity-agent:2022.10.1-linux-sudo

RUN curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
RUN sudo sh -c 'echo deb https://apt.kubernetes.io/ kubernetes-xenial main > /etc/apt/sources.list.d/kubernetes.list'

# 移除nodesource的16.x源配置(用nvm管理版本无需此源)
# RUN curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -

# 统一执行apt更新和依赖安装
RUN sudo apt-get update && \
    sudo apt-get install -y ffmpeg gnupg2 git kubectl \
    binfmt-support qemu-user-static mc jq && \
    sudo apt install -y cmake build-essential wget

ENV NODE_VERSION=14.17.3
# 普通用户权限安装nvm(无需sudo)
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
# 修正NVM_DIR路径为当前用户的nvm安装目录
ENV NVM_DIR="$HOME/.nvm"
# 同一条RUN内完成nvm激活、node安装、默认版本设置(确保环境变量连续生效)
RUN . "$NVM_DIR/nvm.sh" && \
    nvm install ${NODE_VERSION} && \
    nvm use v${NODE_VERSION} && \
    nvm alias default v${NODE_VERSION}
# 将node/npm路径加入全局环境变量
ENV PATH="$NVM_DIR/versions/node/v${NODE_VERSION}/bin:$PATH"
# 验证安装结果
RUN node --version && npm --version
关键修改说明
  • 移除sudo执行nvm命令:nvm是用户级工具,普通用户权限即可完成安装和版本管理,无需切换到root。
  • 修正NVM_DIR路径:正确路径为当前用户的~/.nvm,即$HOME/.nvm,无需额外拼接root目录。
  • 合并nvm相关RUN命令:Docker的每个RUN命令都是独立shell环境,分开执行会导致nvm环境变量丢失,合并到同一条RUN中用.(source)激活脚本,确保后续命令能识别nvm指令。
  • 移除nodesource源:用nvm管理node版本时,不需要提前配置第三方源,避免版本冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 21:55:10