【发布时间】:2021-04-06 01:33:42
【问题描述】:
我正在尝试创建一个 docker 映像,您可以在其中构建/发布,但也可以运行 .net 核心网站,但遇到了一个真正的问题
图像 mcr.microsoft.com/dotnet/sdk:5.0
如果你在一个容器中构建它,它发布没有问题,但是当你运行时你会遇到问题。 相比之下,如果你使用
mcr.microsoft.com/dotnet/aspnet:5.0
那么您就不会遇到任何问题,应用程序运行良好,但您当然不能仅使用该包作为其运行时发布或构建。
我做了一个使用相同源代码和 dockerfile 运行 .net 核心 Web 应用程序的实验,除了一个使用 sdk 和一个使用 aspnet。 两个 dockerfile 都使用之前生成的发布文件夹中的预构建 dll 构建映像。它们看起来像这样..
泊坞窗文件 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"]
泊坞窗文件 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 file 1 image 运行网站没问题, Docker 文件 2 图像给出了错误.. " 无法绑定到 IPv6 环回接口上的 http://localhost:5000:'无法分配请求的地址'。"
我们知道这是为什么吗?我认为 sdk 映像应该能够做 aspnet 映像可以做的所有事情。 至于错误,我可以修改 docker file 2 以包含
#ENV ASPNETCORE_URLS=http://+:80
#EXPOSE 80 5000
.. 运行该网站,但无法检索 wwwroot.. 的内容,这将是另一个问题。我也不明白为什么我需要在 dockerfile 1 完全没有问题的情况下手动公开端口?
谢谢
【问题讨论】:
标签: docker asp.net-core dockerfile