带有 dotnet 的 Alpine Docker 映像看不到我的应用



我正在尝试使用Alpine Linux docker映像运行我的dotnet 5单文件应用程序。这是我的Dockerfile

FROM mcr.microsoft.com/dotnet/aspnet:5.0-alpine    
WORKDIR /app
COPY ["Service.Translations", "/app/Service.Translations"]
CMD ["./Service.Translations", "--urls", "http://0.0.0.0:5000"]

这是一个依赖于框架的应用程序。也尝试了自给自足,结果是一样的:找不到。Dotnet看不到我的文件,sh也看不到。

这是因为我在Windows上构建了我的应用程序吗?所有教程与阿尔卑斯编译应用程序内部的图像。如果我把Alpine改成Ubuntu或smth,一切都好。

更新:好的,问题出在发布上。我不得不将运行时更改为linux-musl-x64,而不是linux-x64

我发现了问题。Alpine Linux使用musl c库,它使标准的dotnet构建与这个Linux发行版不兼容。Visual studio没有所有发布运行时选项。在这里https://learn.microsoft.com/en-us/dotnet/core/rid-catalog你可以找到所有的。因此,对于alpine linux,我们必须使用linux-musl-x64运行时,而不是linux-x64