【问题标题】:Dockerize sample dotnet core exe application to kubernetes in linux pod将示例 dotnet core exe 应用程序 Dockerize 到 linux pod 中的 kubernetes
【发布时间】:2020-12-29 22:13:12
【问题描述】:

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

项目是使用以下命令创建的:dotnet new console -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"] 没有区别。

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

准确的错误日志:
2020-09-11T11:05:41.9723837Z 步骤 10/26:运行 dotnet build "File.Pod.csproj" -c Release -o /app 2020-09-11T11:05:42.0083655Z ---> 在 7ed9311b9c89 中运行
2020-09-11T11:05:42.7118936Z Microsoft (R) Build Engine 版本 16.6.0+5ff7b0c9e 用于 .NET Core
2020-09-11T11:05:42.7119408Z 版权所有 (C) Microsoft Corporation。保留所有权利。
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 警告
2020-09-11T11:05:50.6542199Z 1 错误

【问题讨论】:

    标签: docker kubernetes azure-devops azure-pipelines azure-yaml-pipelines


    【解决方案1】:

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

    改变了:

    复制。 .
    WORKDIR "/src/File.Pod"

    到 WORKDIR "/src/File.Pod"
    复制 。 .

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

    我 2 天前开始使用 docker、vsts 管道、多个存储库,并且已经可以写一本书,其中包含我遇到的所有(奇怪的、通用的和晦涩的)错误。现在不讨论下一步是错误的,要安装的问题Windows 2019 中的 docker(在 Amazon 中托管的虚拟机中),在 Windows 2019 环境中不起作用的 Linux 映像(默认情况下?)。
    真是一场噩梦,我想知道什么是成熟的,这两天遇到的问题比过去十年还要多! :-)

    【讨论】:

    • 很高兴知道您的问题已解决,我已将我的评论转换为答案,您可以Accept it as an Answer。这可能对阅读此主题的其他社区成员有益,我们可以关闭此主题,谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-22
    • 1970-01-01
    • 2020-06-30
    相关资源
    最近更新 更多