【问题标题】:How does the container networking handle the port mapping with .Net and Docker?容器网络如何处理 .Net 和 Docker 的端口映射?
【发布时间】:2021-02-05 18:12:05
【问题描述】:

创建新的 .Net 5 Web Api 项目时,您可以在生成的 launchSettings.json 文件中找到它

"applicationUrl": "https://localhost:5001;http://localhost:5000",

所以在运行项目时你可以通过调用 Api 端点

获取 https://localhost:5001/weatherforecast

为项目添加 Docker 支持时,您可能会创建一个 Dockerfile 类似

FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /app

COPY *.csproj ./
RUN dotnet restore

COPY . ./
RUN dotnet publish -c Release -o out

FROM mcr.microsoft.com/dotnet/aspnet
WORKDIR /app
EXPOSE 80
COPY --from=build /app/out .
ENTRYPOINT [ "dotnet", "Api.dll" ]

大多数示例文件在该文件中公开端口 80。在 Docker 容器中运行 Api 时通过

docker run -p 8080:80 my-image

我得把电话改成

GET http://localhost:8080/weatherforecast

所以我调用端口 8080,它在内部映射到端口 80,但是端口 80 如何映射到端口 5000 以将请求转发到 Api?它“以某种方式”工作。有人介意解释一下这个容器网络吗?

【问题讨论】:

    标签: c# docker .net-core


    【解决方案1】:

    docslaunchSettings.json 文件仅用于本地开发:

    launchSettings.json 文件:

    • 仅在本地开发机器上使用。
    • 未部署。
    • 包含配置文件设置。

    至于 docker 镜像 - 它的环境变量 ASPNETCORE_URLS 设置为 http://+:80,因此应用程序侦听 80 端口,805000 之间没有发生映射

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-23
      • 2019-08-28
      • 2020-02-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多