Microsoft SDK docker映像可以生成,但不能运行web应用

我试图创建一个docker镜像,您可以在其中构建/发布,但也运行.net核心网站,但有一个真正的问题

镜像mcr.microsoft.com/dotnet/sdk:5.0

如果你使用它在容器中构建,它不会发布任何问题,但当你运行时,你会得到问题。相比之下,如果您使用

mcr.microsoft.com/dotnet/aspnet:5.0

然后你就不会有任何问题了,它可以很好地运行这个应用程序,但当然你不能使用这个包来发布或构建它的运行时。

我已经做了一个使用相同源代码和dockerfile运行.net核心web应用程序的体验,除了一个在使用sdk,一个在使用aspnet。这两个dockerfile都使用之前生成的发布文件夹中的预先构建的dll构建镜像。它们看起来像这样..。

docker文件1

FROM mcr.microsoft.com/dotnet/aspnet:5.0
WORKDIR /app
#copy dlls from publish into working directory
COPY /publish .
ENTRYPOINT ["dotnet", "/app/Whipover.dll"]

docker文件2

FROM mcr.microsoft.com/dotnet/sdk:5.0
WORKDIR /app
#copy dlls from publish into working directory
COPY /publish .
ENTRYPOINT ["dotnet", "/app/Whipover.dll"]

Docker文件1镜像运行网站没有问题,Docker文件2镜像出现错误..“无法绑定到IPv6环回接口上的http://localhost:5000:‘无法分配请求的地址’。”

我们知道这是为什么吗?我认为sdk镜像应该能够完成aspnet镜像所能做的一切。至于这个错误,我可以修改docker文件2以包含

#ENV ASPNETCORE_URLS=http://+:80
#EXPOSE 80 5000

。。它运行网站,但无法检索wwwroot的内容。所以这将是另一个问题。我也不明白为什么我需要手动暴露端口,而dockerfile 1根本没有问题?

谢谢

转载请注明出处:http://www.xinruixiangtm.com/article/20230526/1210408.html