docker - 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 构建图像。他们看起来像这样..
码头文件 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 文件 1 映像运行网站没有问题,Docker 文件 2 映像给出错误..“无法在 IPv6 环回接口上绑定到 http://localhost:5000:'无法分配请求的地址'。”
我们知道这是为什么吗?我认为 sdk 映像应该能够完成 aspnet 映像可以做的所有事情。至于错误,我可以修改 docker file 2 以包含
#ENV ASPNETCORE_URLS=http://+:80
#EXPOSE 80 5000
.. 运行网站,但无法检索 wwwroot.. 的内容,这将是另一个问题。另外,当 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
推荐阅读
- c# - 无法在 Unity 作业系统中调用 .Schedule()
- c - 在 C 中使用 MPI 从文件中读取数据块
- php - 未找到锁定文件。更新依赖项而不是从锁定文件安装。奥罗商务
- ruby-on-rails - Rails / Devise:在不创建用户的情况下设置会话和cookie?
- node.js - Ionic w/React 环境变量未填充在 Docker 容器中
- asp.net-core - 来自 NSwag CSharpClientGenerator 的客户端无法反序列化字符串
- python - 使用数组中的 None/NaN 执行 numpy 操作
- apache - 用 htaccess 替换 seo url 中的参数
- z3 - 如何使用z3_solver中的from_string函数,它是z3PY中的api之一
- python - 如何摆脱python中的小数溢出......我正在尝试计算魔方对于学术项目的可能组合