【发布时间】:2021-09-27 10:43:29
【问题描述】:
我正在尝试将 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
没能帮上忙。
诚然,我正在关注一个非常古老的 Deploying ASP.NET Core apps to Kubernetes on Google Container Engine 视频,但这是我能找到的 asp.net 的最佳示例
这也没有多大帮助
我也尝试遵循此示例.NET 5.0 on Google Cloud 从中获取 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" ]
结果是一样的。
更新
hellowWorldAspNetCore.csproj
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
</Project>
【问题讨论】:
-
你能分享你的应用程序的项目文件的内容吗?我想知道 5.0.0 与 5.0 的最新服务版本是否存在硬依赖。对此进行测试的一种方法是使用 5.0.0 Docker 标签将其固定到该特定版本(例如
5.0.0-alpine3.12)。 -
我已经添加了cs proj文件。 @MattThalman 我对此很陌生,实际上只是复制了我在示例中找到的内容。 dotnet new web 似乎创建了一个标准的 .net 5 应用程序。有什么地方可以在这里获取其他可用选项的列表吗?
-
@MattThalman 感谢您的提示,它不起作用。我有一个将它暴露给外界的新问题,但这是一个不同的问题,我正在研究它。
标签: .net asp.net-core google-cloud-platform google-kubernetes-engine