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

Alpine Linux Docker镜像中nvm命令未找到问题求助

解决Docker中nvm命令找不到的问题

问题原因

Docker的每个RUN指令都会启动独立的非交互式bash进程,这类进程默认不会加载~/.bashrc文件。你虽将nvm初始化脚本写入.bashrc,但后续RUN指令无法读取这些配置,导致nvm命令无法被识别。

修复后的Dockerfile

# Pull the Alpine 3.16 Docker image
FROM alpine:3.16

# Enter the BASH shell
ENTRYPOINT [ "/bin/bash" ]

# Add packages without caching, but while upgrading Alpine
RUN apk add --no-cache -U\
    curl bash ca-certificates\
    openssl ncurses coreutils\
    python3 make gcc g++\
    libgcc linux-headers grep\
    util-linux binutils findutils

RUN touch ~/.bashrc

# Install NVM, source it immediately and run setup commands in the same shell session
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash && \
    export NVM_DIR="$HOME/.nvm" && \
    [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \
    nvm install -s --lts --latest-npm && \
    nvm alias default lts/*

# 写入nvm初始化配置到.bashrc,确保进入容器时能加载nvm
RUN echo '\
export NVM_DIR="$HOME/.nvm" \
[-s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" \
[[ -r $NVM_DIR/bash_completion ]] && \. $NVM_DIR/bash_completion\
' > ~/.bashrc

# Install NPM packages and run the dev server
RUN [ "/bin/bash", "-c", "source ~/.nvm/nvm.sh && npm i" ]
CMD [ "/bin/bash", "-c", "source ~/.nvm/nvm.sh && npm run dev" ]

关键修改说明

  • 将nvm安装、初始化和Node安装命令合并到同一个RUN指令:所有操作在同一shell会话执行,nvm环境变量即时生效,无需依赖.bashrc加载。
  • 在执行npm命令的RUN和CMD中手动source ~/.nvm/nvm.sh:确保非交互式shell执行时能加载nvm环境,找到npm命令。
  • 调整.bashrc写入顺序:先完成nvm安装与Node配置,再写入初始化脚本,避免顺序问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 05:30:42