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

Alpine镜像中ASP.NET Core Angular应用Node.js v16安装问题排查

ASP.NET Core Angular应用Alpine容器化时npm未找到错误

我在使用Alpine镜像对ASP.NET Core Angular应用进行容器化时,运行Dockerfile出现了以下错误:

line 2: npm: not found
The command "npm install" exited with code 127

之前我用以下方式安装Node.js时一切正常:

ENV NODE_VERSION=16.13.1
RUN curl -fsSLO --compressed "https://unofficial-builds.nodejs.org/download/release/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64-musl.tar.xz"; \
  tar -xJf "node-v$NODE_VERSION-linux-x64-musl.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \
  && ln -s /usr/local/bin/node /usr/local/bin/nodejs;
  
FROM build AS publish

RUN dotnet publish 'MyApp.API.csproj' -c Release -o /app/publish --no-restore

当前使用的Dockerfile内容如下:

FROM node:16-alpine AS node_builder
WORKDIR /app
COPY MyApp/ClientApp/package*.json ./
RUN npm install --force

FROM mcr.microsoft.com/dotnet/sdk:6.0-alpine AS build
WORKDIR /src
COPY MyApp.Models ./MyApp.Models
COPY MyApp.Service ./MyApp.Service
COPY MyApp.Repository ./MyApp.Repository
COPY MyApp./MyApp

WORKDIR /src/MyApp
RUN dotnet restore 'MyApp.API.csproj'

RUN dotnet build 'MyApp.API.csproj' --disable-parallel -c Release -o /app/build

FROM build AS publish
COPY --from=node_builder /app/dist /app/dist
RUN dotnet publish 'MyApp.API.csproj' -c Release -o /app/publish --no-restore

FROM mcr.microsoft.com/dotnet/aspnet:6.0-alpine AS final
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false
RUN apk add --no-cache \
  icu-data-full \
  icu-libs

COPY --from=publish /app/publish/ /app/

EXPOSE 5001
ENTRYPOINT ["dotnet", "MyApp.API.dll"]

核心问题:
由于dotnet publish命令会自动执行npm install,因此需要在publish阶段具备Node.js环境。我清楚需要将Node.js依赖复制到publish阶段,但尝试数小时仍未解决错误。

注:无法使用RUN apk add --no-cache nodejs=16 npm从Alpine包源下载Node.js,因为该源中没有16版本。


解决方案

次日我解决了该问题,正确的安装命令如下:

RUN apk add --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/v3.16/main/ nodejs=16.20.2-r0

RUN apk add --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/v3.14/main/ npm=7.17.0-r0

之前的错误是因为未正确安装npm且Node.js下载有误,上述命令可修复该问题。


内容的提问来源于stack exchange,提问作者Douglas Sant'Anna

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 08:10:28