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

Dockerfile安装NVM报错:$NVM_DIR指向目录不存在的解决问询

Docker构建NVM安装报错原因及解决方法

报错原因

  1. NVM脚本前置检查机制:NVM安装脚本会先检测NVM_DIR环境变量,若变量存在则验证对应目录是否已创建。你提前通过ENV设置了NVM_DIR=~/.nvm,但此时该目录尚未创建,触发脚本报错。
  2. ~解析异常:Docker的ENV指令中,~不会被Shell解析为当前用户主目录(如root用户的/root),而是被当作字面量字符处理,导致实际路径为~/.nvm而非预期的/root/.nvm,进一步加剧目录不存在的问题。

可行解决方法

方法一:提前创建目录并使用绝对路径

修改Dockerfile,用绝对路径定义NVM_DIR,并在执行安装脚本前创建该目录:

# 更新源并安装依赖
RUN apt-get update \
    && apt-get install -y curl \
    && apt-get -y autoclean

# 定义环境变量
ENV NVM_DIR=/root/.nvm
ENV NODE_VERSION=16.20.2
ENV ANGULAR_VERSION=14.2.13

# 创建目录并安装NVM
RUN mkdir -p $NVM_DIR \
    && curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash

# 加载NVM并安装Node、Angular
RUN /bin/bash -c "[ -s \"$NVM_DIR/nvm.sh\" ] && \. \"$NVM_DIR/nvm.sh\" && nvm install $NODE_VERSION && npm install -g @angular/cli@$ANGULAR_VERSION"

方法二:让NVM脚本自动配置环境变量

不提前设置NVM_DIR,先完成NVM安装,再将环境变量配置写入bashrc,后续加载脚本执行操作:

# 更新源并安装依赖
RUN apt-get update \
    && apt-get install -y curl \
    && apt-get -y autoclean

ENV NODE_VERSION=16.20.2
ENV ANGULAR_VERSION=14.2.13

# 安装NVM并配置环境变量到bashrc
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash \
    && echo "export NVM_DIR=~/.nvm" >> /root/.bashrc \
    && echo "[ -s \"$NVM_DIR/nvm.sh\" ] && \. \"$NVM_DIR/nvm.sh\"" >> /root/.bashrc

# 加载脚本并安装Node、Angular
RUN /bin/bash -c "source /root/.bashrc && nvm install $NODE_VERSION && npm install -g @angular/cli@$ANGULAR_VERSION"

方法三:使用官方Node镜像(推荐)

若无需管理多版本Node,直接使用官方Node镜像可跳过NVM的环境适配问题,大幅简化构建流程:

FROM node:16.20.2-bullseye

ENV ANGULAR_VERSION=14.2.13

RUN npm install -g @angular/cli@$ANGULAR_VERSION

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 02:15:13