【问题标题】:Asp.Net Core WebAPI [dotnet publish --self-contained -r linux-64] is it really self-contained after putting into Docker containerAsp.Net Core WebAPI [dotnet publish --self-contained -r linux-64] 放入Docker容器后是否真的自包含
【发布时间】:2022-01-09 15:11:29
【问题描述】:

如果比较 linux-self-containedlinux-dotnet 文件夹,我在这 2 次发布运行后没有发现任何差异。

dotnet publish WebApi.csproj -c Release -o linux-self-contained --self-contained -r linux-x64
dotnet publish WebApi.csproj -c Release -o linux-dotnet -r linux-x64

是否有可能实现 dotnet(Linux 可执行文件)和任何其他先决条件将进入单个目录而不是 /usr/bin 的发布模式 它可以在 Docker 容器中工作吗?

ENTRYPOINT ["dotnet", "MyProject.WebApi.dll"]

目前如果浏览docker容器的内容

root@6e813cdc578d:/# find . -name dotnet
./usr/share/dotnet
./usr/share/dotnet/dotnet
./usr/bin/dotnet

单目录的概念似乎非常适用于--self-contained .Net Core Console App with

ENTRYPOINT ["./MyLittleConsoleProgram"] 

我在生成的 Docker 映像中没有看到任何 dotnet 事件。

基本上,所有这些练习都是为了实现 How to run dotnet core app with Selenium in Docker

第二个答案确实适用于控制台应用程序)

从那时起,事实证明在单独的容器中使用 selenium 是一种更好的方法,它只需要在 WebAPI 中更改一行代码。

【问题讨论】:

  • 两种发布方式是一样的,因为self-contained的默认值为true

标签: linux docker .net-core asp.net-core-webapi


【解决方案1】:

这两个命令是等价的。当您在dotnet publish WebApi.csproj -c Release -o linux-dotnet -r linux-x64 中使用-r 开关时,它会隐式启用--self-contained。在 .NET 6 中,此命令将生成一个警告,告诉您应该显式提供 --self-contained--no-self-contained。因此,如果您想提供 RID 并且不想要自包含部署,则应包括 --no-self-contained

【讨论】:

    猜你喜欢
    • 2022-01-01
    • 1970-01-01
    • 2019-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    • 1970-01-01
    相关资源
    最近更新 更多