docker - 如何为dotnet MVC应用程序配置默认端口?

标签 docker asp.net-core

我正在开发一个非常基本的asp.net核心Web应用程序。

当我在个人计算机上手动运行该应用程序时,端口为5050。

我已经编写了一个Dockerfile(从教程中得到启发)。这里是:

FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 80

FROM microsoft/dotnet:2.2-sdk AS build
WORKDIR /src
COPY ["projet1.csproj", "./"]
RUN dotnet restore "./projet1.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "projet1.csproj" -c Release -o /app

FROM build AS publish
RUN dotnet publish "projet1.csproj" -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "projet1.dll"]

运行镜像时,应用程序正在端口80上应答。这是一件好事,但是我想了解为什么它在端口80上侦听。

我没有配置文件,也没有命令行参数告诉我的应用程序侦听端口80。这种差异怎么可能?

最佳答案

这是您正在使用的运行时镜像的概述中的documented(在底部):

This image sets the ASPNETCORE_URLS environment variable to http://+:80 which means that if you have not explicity [sic] set a URL in your application, via app.UseUrl in your Program.cs for example, then your application will be listening on port 80 inside the container.



在本地运行应用程序时,默认情况下使用端口5000(HTTP)和5001(HTTPS)。可以在launchSettings.json中覆盖它,我希望您已完成此操作,以使其在您的环境中使用5050

请注意,不赞成使用您使用的图像,而应使用Microsoft自托管的mcr.microsoft.com/dotnet/core/aspnetmcr.microsoft.com/dotnet/core/sdk图像。

关于docker - 如何为dotnet MVC应用程序配置默认端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57111154/

相关文章:

postgresql - 官方 Postgres 镜像如何使用环境变量创建用户和数据库?

docker - 在 VM 上未检测到事件,正在中止(Win10 VM 中的 Docker)

c# - 为什么 Visual Studio 会在 .Net Core 上运行的 WebAPI 代码中报告 lambda 错误?

asp.net-core - 什么可能导致 `UserManager` 返回错误的用户?

c# - 如果它是一个单独的方法,ASP.NET Core 异步请求处理程序总是以 200 OK 和空主体响应

python - 如何最好地从另一个 Docker 容器使用 Django 数据库?

mysql - 为什么 docker start 比 docker run 快很多

bash - 发送击键到 Dockerfile,Ubuntu

c# - 实体类型 'type' 处于阴影状态。有效的模型要求所有实体类型都具有相应的 CLR 类型

asp.net-core - IdentityServer4 签名证书引用 token