【问题标题】:Microsoft SDK docker image can build but not run a web appMicrosoft SDK docker 映像可以构建但不能运行 Web 应用程序
【发布时间】: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


    【解决方案1】:

    解决方案是拥有一个多部分 dockerfile,您可以在其中使用 sdk 构建,然后使用运行时不同的映像运行。

    我的印象是 sdk 可以两者兼得。

    我正在查看关于复数视觉的过时课程。这是最好的参考使用是 https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/docker/building-net-docker-images?view=aspnetcore-5.0

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-04
      • 2022-09-28
      • 2016-08-21
      • 1970-01-01
      • 1970-01-01
      • 2020-06-09
      相关资源
      最近更新 更多