我正在尝试在Visual Studio 2017中使用.net核心角度spa模板创建图像。我一直收到npm错误127。即使我可以看到正在执行npm run build命令,但该命令已超过此步骤。我尝试在构建开始时在映像上安装节点。那里也没有成功。 这就是我的dockerfile的样子。
FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /src
COPY ["AngularNetCoreDockerApp/AngularNetCoreDockerApp.csproj", "AngularNetCoreDockerApp/"]
RUN dotnet restore "AngularNetCoreDockerApp/AngularNetCoreDockerApp.csproj"
COPY . .
WORKDIR "/src/AngularNetCoreDockerApp"
RUN dotnet build "AngularNetCoreDockerApp.csproj" -c Release -o /app
FROM build AS publish
RUN dotnet publish "AngularNetCoreDockerApp.csproj" -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "AngularNetCoreDockerApp.dll"]
答案 0 :(得分:2)
我最终将构建分为多个阶段。
首先,我已经从* .csproj文件中删除了目标PublishRunWebpack,以确保该应用不会在发布过程中构建spa。
之后,我的Dockerfile如下所示:
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim AS base
WORKDIR /app
EXPOSE 80
FROM node:latest AS node-packages
WORKDIR /web
COPY "ProjectFolder/ClientApp/package.json" .
COPY "ProjectFolder/ClientApp/package-lock.json" .
RUN npm install
FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS dotnet-packages
WORKDIR /src
COPY ["ProjectFolder/ProjectFile.csproj", "ProjectFolder/"]
RUN dotnet restore "ProjectFolder/ProjectFile.csproj"
FROM node-packages AS node-build
WORKDIR /web
COPY ProjectFolder/ClientApp .
RUN npm run build --prod
FROM dotnet-packages AS dotnet-build
WORKDIR /src
COPY . .
WORKDIR "/src/ProjectFolder"
RUN dotnet build "ProjectFile.csproj" -c Release -o /app/build
RUN dotnet publish "ProjectFile.csproj" -c Release -o /app/publish
FROM node-build AS node-publish
FROM dotnet-build AS dotnet-publish
FROM base AS final
WORKDIR /app
COPY --from=dotnet-publish /app/publish .
WORKDIR /app/ClientApp/dist
COPY --from=node-publish /web/dist .
WORKDIR /app
ENTRYPOINT ["dotnet", "ProjectFile.dll"]
答案 1 :(得分:1)
它结束了具有与所述dockerfile做。我最终使用了
FROM microsoft/dotnet:2.1.301-sdk AS builder
WORKDIR /source
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash -
RUN apt-get install -y nodejs
COPY *.csproj .
RUN dotnet restore
COPY ./ ./
RUN dotnet publish "./angular-app.csproj" --output "./dist" --configuration Release --no-restore
FROM microsoft/dotnet:2.1.1-aspnetcore-runtime
WORKDIR /app
COPY --from=builder /source/dist .
EXPOSE 80
ENTRYPOINT ["dotnet", "angular-app.dll"]
找到了答案HERE