.net - 部署 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>
解决方案
有 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 种方式的详细过程的文档。
推荐阅读
- javascript - 如何防止调整 Javascript 窗口的大小和最大化
- python - 使用 UDF 在 pyspark 中对生成的 DataFrame 进行排序
- javascript - 有没有办法存储以前的html,如果json有任何变化,那么只更新html中的那些变化?
- mongodb - MongoDB CREATE SCHEMA 等效项
- flutter - Android 模拟器抛出系统 UI 无响应
- wpf - WPF如何为两个不同菜单的MenuItem Popup设置不同的样式
- excel - 字符串数据透视表excel
- shopify - Shopify 订单编辑:XXX 未添加,因为它已经在订单上
- kotlin - 如何使用 objectanimator 继续移动视图?
- animation - Plotly:如何在动画中调整 X 轴标签的软运动