首页 > 解决方案 > 部署 Asp.net 5 应用程序失败并显示“或者,安装框架版本 '5.0.0'”

问题描述

我正在尝试将 asp .net 5 应用程序部署到 Google Kubernetes Engine。在我使用我的生产应用程序执行此操作之前,我认为最好从基础开始并部署一个简单的 .net 5 Web 应用程序。

我创建了一个简单的网络应用程序

mkdir HellowWorldAspNet
cd HellowWorldAspNet
dotnet new web
dotnet restore 
dotnet publish

cd \bin\Debug\net5.0\publish

然后我创建了一个 Dockerfile

FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS build
ADD ./ /app
ENV ASPNETCORE_URLS=http://*:${PORT}
WORKDIR /app
ENTRYPOINT [ "dotnet", "HellowWorldAspNetCore.dll" ]

现在我尝试将它推送到谷歌云 K8s

// publish the google container
gcloud builds submit --tag gcr.io/{MyProject}/hello-dotnet:v1

// run the pod
kubectl run hello-dotnet --image gcr.io/{MyProject}/hello-dotnet:v1 --port=8080

// Show what pods are running
kubectl get pods

节目

在此处输入图像描述

当我检查 pod 的日志时,我看到了

kubectl logs hello-dotnet

找不到指定的框架“Microsoft.AspNetCore.App”,版本“5.0.0”。

  • 检查应用程序依赖项并定位安装在以下位置的框架版本:/usr/share/dotnet/shared/Microsoft.AspNetCore.App
  • 或者,安装框架版本“5.0.0”。

我假设它与 docker 文件有关,但据我所知,这应该是 FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS build 告诉它至少使用 .net 5 构建我怎么知道它也与它一起运行?

将其更改为

FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS runtime

没有缝来帮忙。

诚然,我正在关注一个非常古老的在 Google Container Engine 上将 ASP.NET Core 应用程序部署到 Kubernetes 的视频,但这是我能找到的 asp.net 的最佳示例

这也没有太大帮助

我尝试在 Google Cloud 上遵循此示例以及.NET 5.0从中获取 docker 文件。

FROM mcr.microsoft.com/dotnet/sdk:5.0-alpine AS build
WORKDIR /app
COPY *.csproj ./
RUN dotnet restore
COPY . ./
WORKDIR /app
RUN dotnet publish -c Release -o out
FROM mcr.microsoft.com/dotnet/aspnet:5.0-alpine AS runtime
WORKDIR /app
COPY --from=build /app/out ./
ENTRYPOINT [ "dotnet", "HellowWorldAspNetCore.dll" ]

结果是一样的。

更新

helloWorldAspNetCore.csproj

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>net5.0</TargetFramework>
  </PropertyGroup>

</Project>

标签: .netasp.net-coregoogle-cloud-platformgoogle-kubernetes-engine

解决方案


有 4 种方法可以在 gcp 中部署 ASP.NET 应用程序

1. 使用Cloud Tools for Visual Studio 扩展直接从 Visual Studio 部署。

2.使用“dotnet publish”部署框架依赖部署,j

3.使用自定义 Dockerfile 部署到 App Engine 柔性环境

4. 使用自定义 Dockerfile 部署到 Container Engine。

尝试使用自定义 dockerfile 部署到容器引擎,这是与其他方法相比更简单的方法。

这是包含所有 4 种方式的详细过程的文档。


推荐阅读