【问题标题】:Cant access .Net Core app via Docker on Windows (localhost)无法通过 Windows(本地主机)上的 Docker 访问 .Net Core 应用程序
【发布时间】:2021-03-05 07:21:09
【问题描述】:

我创建了一个 docker 文件并公开了端口。我还设置了我的 program.cs 以读取这些 URL + 端口,但我无法访问它。

我在 docker 控制台中看到的是我的应用程序正在运行。我就是够不到。

我尝试了 localhost:5024 和 172.17.0.2:5024 ,但它没有成功。

这是我的 docker 文件

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build

WORKDIR /app

EXPOSE 80
EXPOSE 5024

# copy csproj and restore as distinct layers
COPY *.sln .
COPY Api/*.csproj ./Api/

RUN dotnet restore

# copy everything else and build app
COPY Api/. ./Api/
COPY Api.Core/. ./Api.Core/

WORKDIR /app/Api
RUN dotnet publish -c Release -o out

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS runtime
WORKDIR /app

COPY --from=build /app/Api/out ./
ENTRYPOINT ["dotnet", "Api.dll"]

这是我的程序.cs

public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .UseServiceProviderFactory(new AutofacServiceProviderFactory())
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseContentRoot(Directory.GetCurrentDirectory());
                webBuilder.UseIISIntegration();
                webBuilder.UseKestrel();
                webBuilder.UseStartup<Startup>();
                webBuilder.UseUrls("http://*:5024");
            });

然后我运行这些命令来让它运行

docker build -f Api/Dockerfile -t quiplogs_api .
docker run -d -p 5024:80 --name app quiplogs_api

【问题讨论】:

    标签: c# .net docker asp.net-core .net-core


    【解决方案1】:

    简短回答

    将您的 docker run 命令更改为以下内容:

    docker run -d -p 5024:5024 --name app quiplogs_api

    使用 localhost:5024/api.... 访问 api 要么 更改 UseUrls 以使用端口 80 一切都保持不变

    长答案

    在 docker 的世界里,有两个网络。

    首先是在 docker 世界中,所有容器都在其中运行。 第二个是主机。 在编写 docker 应用程序时,您必须非常小心您所在的网络。

    -p 不适用于发布选项的端口。

    使用此开关,您可以在主机网络和 docker 网络之间建立链接。 您的命令是说发布此容器的主机端口 5024 并将其映射到 docker 网络端口 80。 但 UseUrls 实际上将其配置为在 docker 内的端口 5024 上运行。轻微的语义差异。新命令解决了这个问题。或者您可以更改 UseUrls 以使用端口 80。

    【讨论】:

      猜你喜欢
      • 2022-07-25
      • 2017-10-20
      • 2019-01-16
      • 1970-01-01
      • 1970-01-01
      • 2017-09-29
      • 2020-10-08
      • 2019-09-16
      • 2016-07-31
      相关资源
      最近更新 更多