将示例dotnet-core.exe应用程序Dockerize到linux pod中的kubernetes



我正试图创建一个dotnet核心应用程序,并通过azure yaml管道(具有多个存储库(将其部署到kubernetes集群
我遇到了以下错误:CSC:错误CS5001:程序不包含适用于入口点的静态"Main"方法[/src/File.Pod/File.Pod.csproj]

该项目是用以下命令创建的:dotnet new console-o File.Pod-n File.Pod
我的目标是部署一个exe。互联网上的大多数文档都谈到了部署ASPNET web应用程序。

csproj生成的

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
**<OutputType>Exe</OutputType>**
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>  
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Configuration.AzureKeyVault" Version="3.1.7" />
<PackageReference Include="Models" Version="9704.0.0-beta" />
<PackageReference Include="NLog.Web.AspNetCore" Version="4.9.3" />
<PackageReference Include="Utils.Log" Version="2020.9.3.1" />
</ItemGroup>  
<ItemGroup>
<ProjectReference Include="..Shared.LibFile.ServiceFile.Service.csproj" />
</ItemGroup>
<ItemGroup>
<Folder Include="Helpers" />
</ItemGroup>
</Project>

docker文件:

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /src
COPY ["File.Pod.csproj", "File.Pod/"]
COPY ["Shared.Lib/File.Service/File.Service.csproj", "Shared.Lib/File.Service/"]
COPY ["Shared.Lib/File.DAL/File.DAL.csproj", "Shared.Lib/File.DAL/"]
COPY ["nuget.config", "./"] 
RUN dotnet restore "File.Pod/File.Pod.csproj" --configfile nuget.config -nowarn:msb3202,nu1503 --verbosity diag
COPY . .
WORKDIR "/src/File.Pod"
RUN dotnet build "File.Pod.csproj" -c Release -o /app
FROM build AS publish
RUN dotnet publish "File.Pod.csproj" -c Release -o /app
FROM build AS base
RUN apt update && apt install -y openssh-client
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "run"]

作为ENTRYPOINT,我尝试了ENTRYPOINT["dotnet","run"]或ENTRYPOINT["dotnet'","File.POD.DLL"],没有任何区别。

我觉得问题出在图像的类型上(FROM mcr.microsoft.com/dotnet/core/sdk:3.1AS build(,但我不确定。我试了各种方法,结果都一样。

准确的错误日志:
20200-09-11T11:05:41.97233837Z步骤10/26:RUN dotnet build"File.Pod.csproj"-c发布-o/app2020-09-11T11:05:42.00083655Z->在7ed9311b9c89中运行
2020-09-11T11:05:42.7118936Z用于.NET Core的Microsoft(R(Build Engine版本16.6.0+5ff7b0c9e
2020-09-111T11:05:42.7119408Z版权所有(C(Microsoft Corporation。保留所有权利
20200-09-11T11:05:42.7119642Z
2020-09-11T111:05:43.438745Z正在确定要恢复的项目
20200-09-11T11:05:45.6330496Z已恢复/src/File.Pod/File.Podu.csproj(在2.04秒内(
20200-09-11T11:05:45.6330978Z已恢复/src/Shared.Lib/File.Service/File.Services.csproj(在2.05秒内(
20200-09-11T11:05:45.7516552Z已恢复/src/Shared.Lib/File.DAL/File.DAL.csproj(在101毫秒内(
20200-09-11T11:05:49.6118355Z文件.DAL->app/File.DAL.dll
2020-09-11T11:05:50.2378452Z File.Service->/app/File.Service.dll
2020-09-11T11:05:5066394251Z CSC:错误CS5001:程序不包含适用于入口点的静态"Main"方法[/src/File.Pod/File.Pod.csproj]
2010-09-11T11:00:50.6552494Z
202 0-09-11T11:35:50.6525914Z构建失败
2020-09-11T11:05:50.6531013Z
2020:09-11T11:05:50.6536286Z CSC:错误CS5001:程序不包含适用于入口点的静态"Main"方法[/src/File.Pod/File.Pod.csproj]
202 0-09-11T11:005:50.6541921Z 0警告
2020 0-09-11T11:35:50.6542199Z 1错误

8小时的工作和47次构建尝试:

更改:

COPY . .  
WORKDIR "/src/File.Pod"

WORKDIR "/src/File.Pod"  
COPY . .

注意:这里有很多文档,但不是一个详尽的好文档
我希望有一个文档能提供足够的知识来正确开始:图像的选择、目录范围、复制内容的重要性(谁能够理解复制源代码以避免此错误的"copy."的重要性,等等…

两天前,我开始使用docker、vsts管道、多个存储库,并且已经可以写一本书,其中包含我遇到的所有(奇怪、通用和模糊(错误。现在没有谈论错误的下一步,在windows 2019中安装docker的问题(在亚马逊托管的虚拟机中(,在windows 2019-env上不工作的linux映像(默认情况下?(
真是一场噩梦,我想知道什么是成熟的,在过去的两天里遇到的问题比过去十年还要多!:-(

最新更新