将样例dotnet核心exe应用程序Docker化到linux pod中的kubernetes

问题描述

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

使用以下命令创建项目:dotnet新控制台-o File.Pod -n File.Pod
我的目标是部署一个exe。 Internet上的大多数文档都谈论部署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.Lib\File.Service\File.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”]都没有区别。

我认为问题出在图像类型(从mcr.microsoft.com/dotnet/core/sdk:3.1 AS构建)中,但是我不确定。我尝试了各种相同的结果。

确切的错误日志:
2020-09-11T11:05:41.9723837Z步骤10/26:运行dotnet构建“ File.Pod.csproj” -c版本-o / app 2020-09-11T11:05:42.0083655Z->在7ed9311b9c89中运行
2020-09-11T11:05:42.7118936Z适用于.NET Core的Microsoft(R)Build Engine版本16.6.0 + 5ff7b0c9e
2020-09-11T11:05:42.7119408Z版权所有(C)微软公司。保留所有权利。
2020-09-11T11:05:42.7119642Z
2020-09-11T11:05:43.1438745Z确定要还原的项目...
2020-09-11T11:05:45.6330496Z恢复了/src/File.Pod/File.Pod.csproj(在2.04秒内)。
2020-09-11T11:05:45.6330978Z恢复了/src/Shared.Lib/File.Service/File.Service.csproj(在2.05秒内)。
2020-09-11T11:05:45.7516552Z恢复了/src/Shared.Lib/File.DAL/File.DAL.csproj(101毫秒)。
2020-09-11T11:05:49.6118355Z File.DAL-> /app/File.DAL.dll
2020-09-11T11:05:50.2378452Z File.Service-> /app/File.Service.dll
2020-09-11T11:05:50.6394251Z CSC:错误CS5001:程序不包含适用于入口点[/src/File.Pod/File.Pod.csproj]的静态“主”方法
2020-09-11T11:05:50.6525494Z
2020-09-11T11:05:50.6525914Z建立失败。
2020-09-11T11:05:50.6531013Z
2020-09-11T11:05:50.6536286Z CSC:错误CS5001:程序不包含适用于入口点[/src/File.Pod/File.Pod.csproj]的静态“主”方法
2020-09-11T11:05:50.6541921Z 0警告(s)
2020-09-11T11:05:50.6542199Z 1个错误

解决方法

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

已更改:

复制。 。
WORKDIR“ /src/File.Pod”

到 WORKDIR“ /src/File.Pod”
复制。

注意:有很多文档,但不是详尽的好文档。
我希望某个文档能够为您提供足够的知识以使您正确入门:图像选择,目录范围,复制内容的重要性(谁能够理解将源代码复制到的“ COPY ..”的重要性)。避免出现此错误,等等...

2天前,我开始使用docker,vtss管道,多个存储库,并且已经可以写一本书,其中包含我遇到的所有(怪异,泛型和晦涩)错误。现在不谈论下一步错误了,安装问题Windows 2019(在Amazon托管的VM中)中的docker,在Windows 2019 env上不起作用的Linux映像(默认情况下?)。
与过去十年相比,过去两天来,发生了什么噩梦,我不知道这是什么成熟的问题! :-)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...