无法通过 docker 连接到 ASP.NET Core

Nie*_*erg 1 docker kestrel-http-server asp.net-core

嗨,人们已经关注这个问题太久了,需要一些帮助。

我制作了一个 ASP.NET 核心网站,只是与 VS 2017 (v 1.1) 配套的模板而已。我使用 dotnet core cli 发布站点并使用此 dockerfile 构建图像:

FROM microsoft/dotnet:1.1-runtime
COPY /Publish /dotnetapp
WORKDIR /dotnetapp

EXPOSE 8444
ENTRYPOINT ["dotnet", "Inqu.dll"]
Run Code Online (Sandbox Code Playgroud)

当我运行创建的图像时:

docker run -it <image_name:tag> -p 8444:8444
Run Code Online (Sandbox Code Playgroud)

图像启动等待请求:

Hosting environment: Production
Content root path: /dotnetapp
Now listening on: http://*:8444
Application started. Press Ctrl+C to shut down.
Run Code Online (Sandbox Code Playgroud)

但是我无法访问该站点并在尝试访问该站点时收到 ERR_CONNECTION_REFUSED 认为http://local-ip:8444/

我已将 WebHostBuild 修改为:

        var host = new WebHostBuilder()
            .UseKestrel()
            .UseUrls("http://*:8444")
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseStartup<Startup>()
            .UseApplicationInsights()
            .Build();

        host.Run();
Run Code Online (Sandbox Code Playgroud)

所以它应该监听8444端口,我也试过设置:

ENV ASPNETCORE_URLS http://*:8444
Run Code Online (Sandbox Code Playgroud)

在 Dockerfile 中,但它没有帮助。


我在 docker 中启动并运行了一些其他图像(gogs 和 mysql),我可以使用本地 ip:port 访问它们,没有问题,但我无法连接到 kestrel 服务器。

有人可以帮我吗?

Nie*_*erg 7

是一个愚蠢的错误争论的顺序是错误的

docker run -it -p 8444:8444 <image_name:tag>
Run Code Online (Sandbox Code Playgroud)

它起作用了:\

  • 花了两个小时才弄清楚,谢谢你救了我接下来的两个小时! (2认同)