Docker 带有 asp.net 的文件在 Jenkins 中构建时抛出 npm not found 错误

Docker file with asp.net throws npm not found error while it is building in Jenkins

我正在尝试通过 Jenkins 在下面构建 docker 文件。

FROM mcr.microsoft.com/dotnet/sdk:2.1 AS build

ARG PROFILE=Production

WORKDIR /app
COPY . ./

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"]

但是在构建文件时,它给出了一个错误提示

step 5/10 : RUN cd src/stayfolio.Demo.Web.aroundfollie && npm install && npm run build:dll && npm start ---> Running in 86a2e1e8efcf [91m/bin/sh: 1: npm: not found [0mThe command '/bin/sh -c cd src/stayfolio.Demo.Web.aroundfollie && npm install && npm run build:dll && npm start' returned a non-zero code: 127

如您所见,我的 docker 文件中提到了 && npm install && npm 运行 build:dll && npm start,但为什么错误说 npm: not found?

默认情况下,docker 映像 mcr.microsoft.com/dotnet/sdk 没有安装 npm。您可以使用包管理器安装它或从另一个 docker 图像复制它。

示例:

FROM node:alpine AS node_base
FROM mcr.microsoft.com/dotnet/sdk:2.1 AS build
COPY --from=node_base . .
# the rest of your Dockerfile

您在评论中提到的文章中也描述了这种方法