docker - .Net核心角度模板dockerfile错误

标签 docker .net-core visual-studio-2017

我正在尝试在Visual Studio 2017中使用.net核心 Angular 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"]

最佳答案

我最终将构建分为多个阶段。

首先,我已经从* .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"]

关于docker - .Net核心角度模板dockerfile错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54484554/

相关文章:

visual-studio - 如何增加 Visual Studio IDE 工具栏的高度?

swift 3.1.1.-在 linux copyItem 上发布(atPath :toPath:) is not yet implemented

docker - 暂停Docker容器

docker - 在 dind 中从 armhf/ubuntu 构建时,回显 docker 文件中的文件失败

c# - Asp.net Core 获取 WebResource Url

.net - Visual Studio : How to change target framework used by editor?

asp.net-mvc - 将 Visual Studio 2017 MVC View 脚手架更新到 Bootstrap 4

docker - 复制名为 `run`的文件后Docker错误

c# - 如何解决dotnet核心中的nuget依赖 hell ?

c# - .NET Core - 有没有办法实现 WinForms?