docker - Net Core MVC Dockeri 文件不起作用。我的本地项目没有错误
问题描述
我有在分层架构中运行的 net core mvc 项目。它在本地运行良好,但不适用于 docker
FROM mcr.microsoft.com/dotnet/sdk:5.0 as build
WORKDIR /app
COPY ./MyBlog.Shared/MyBlog.Shared.csproj ./MyBlog.Shared/
COPY ./MyBlog.Data/MyBlog.Data.csproj ./MyBlog.Data/
COPY ./MyBlog.Services/MyBlog.Services.csproj ./MyBlog.Services/
COPY ./MyBlog.Entities/MyBlog.Entities.csproj ./MyBlog.Entities/
COPY ./MyBlog.Mvc/MyBlog.Mvc.csproj ./MyBlog.Mvc/
COPY MyBlog.sln .
RUN dotnet restore
COPY . .
RUN dotnet publish ./MyBlog.Mvc/MyBlog.Mvc.csproj -o /publish/
FROM mcr.microsoft.com/dotnet/aspnet:5.0
WORKDIR /app
COPY --from=build /publish .
ENV ASPNETCORE_URLS="http://*:5000"
ENTRYPOINT ["dotnet","MyBlog.Mvc.dll" ]
解决方案
如您所见,该应用程序localhost
仅收听。您需要设置一个环境变量来告诉 ASP.NET Core 侦听所有接口,而不是只侦听localhost
无法访问的接口。
ASPNETCORE_URLS="https://+;http://+"
您有一个ENV ASPNETCORE_URLS="http://*:5000"
命令,但它似乎没有生效,请尝试将其指定为参数:
docker run
--rm -it
-p 8000:80
-p 8001:443
-e ASPNETCORE_URLS="https://+;http://+"
-e ASPNETCORE_HTTPS_PORT=8001
-e ASPNETCORE_Kestrel__Certificates__Default__Password="password"
-e ASPNETCORE_Kestrel__Certificates__Default__Path=\https\aspnetapp.pfx
-v %USERPROFILE%\.aspnet\https:C:\https\
mcr.microsoft.com/dotnet/core/samples:aspnetapp
请参阅 Microsoft 的文档,了解如何对 ASP.NET Core 应用程序进行 dockerize。
推荐阅读
- html - 我希望能够从 HTML 文件中提取链接到特定源的 URL
- c# - c# 中 CosmosDB DocumentDB 和 SqlAPI 的性能下降
- c# - 如何使用 Unity 在 Prism 中使用同一实例注册服务?
- for-loop - jmeter中的jsr223后处理器中的条件Json表达式和for循环
- c - 如何比较两个不同字符串中的每个字符?
- regex - 正则表达式匹配以动态字符串开头的字符串
- java - 引诱报告:使用 Citrus 编写的失败测试显示为“破碎”
- java - 如果生产者在不同的服务中,消费者可以使用 Reactor Kafka 减慢生产者的速度吗?
- angularjs - JPA 未插入连接表
- javascript - 如何添加对象数组属性?