Jenkins构建含ASP.NET项目的Dockerfile时出现npm not found错误
报错原因
你使用的mcr.microsoft.com/dotnet/sdk:2.1是微软官方的.NET SDK镜像,默认仅内置.NET相关的运行环境和构建工具,没有预装Node.js和npm组件,因此执行npm相关命令时会找不到可执行文件,该问题和你配置的npm业务命令无关。
解决方法
在Dockerfile的build阶段、执行npm命令之前,新增Node.js和npm的安装步骤即可,你可以根据项目对Node.js的版本要求选择适配的安装方案,修改后的Dockerfile参考如下:
FROM mcr.microsoft.com/dotnet/sdk:2.1 AS build ARG PROFILE=Production WORKDIR /app COPY . ./ # 新增:安装对应版本的Node.js与npm,以下为Debian系镜像通用安装示例,可替换为符合版本要求的安装命令 RUN apt-get update \ && apt-get install -y nodejs npm \ && rm -rf /var/lib/apt/lists/* RUN cd src/stayfolio.Demo.Web.aroundfollie \ && npm install && npm run build:dll && npm start RUN dotnet restore stayfolio.Demo.Web.sln \ && cd src/stayfolio.Demo.Web.aroundfollie \ && mkdir -p build/outputs/aroundfollie \ && dotnet publish --output ../../build/outputs/aroundfollie/ FROM mcr.microsoft.com/dotnet/sdk:2.1 WORKDIR /app COPY --from=build /app/build/outputs/aroundfollie ./ CMD ["dotnet", "stayfolio.Demo.Web.aroundfollie.dll"]
注:如果默认apt源安装的Node.js版本不符合项目要求,可自行调整安装命令,比如手动下载对应版本的二进制包配置环境变量,只要保证构建阶段npm命令可正常调用即可。
内容的提问来源于stack exchange,提问作者GoonGamja
相关产品推荐
相关产品推荐

