【问题标题】:.Net core angular template dockerfile error.Net核心角度模板dockerfile错误
【发布时间】:2019-06-26 07:53:53
【问题描述】:

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

【问题讨论】:

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


    【解决方案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

    【讨论】:

      【解决方案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"]
      

      【讨论】:

        猜你喜欢
        • 2021-04-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多