无法访问本地 Docker 容器上的 Asp.Net Core

2024-05-17

我在 asp.net core 中创建了一个应用程序,并创建了一个 dockerfile 来生成本地映像并运行它。

FROM microsoft/dotnet:latest

COPY . /app

WORKDIR /app

RUN ["dotnet", "restore"]

RUN ["dotnet", "build"]

EXPOSE 5000/tcp

ENTRYPOINT ["dotnet", "run", "--server.urls", "http://0.0.0.0:5000"]

然后,我使用以下命令构建了我的图像

docker build -t jedidocker/first .

然后,我使用以下命令创建了一个容器

docker run -t -d -p 5000:5000 jedidocker/first

但是当我在主机浏览器中运行以下网址时

http://localhost:5000/

我有一个ERR_EMPTY_RESPONSE

是网络问题吗?我该如何解决?

PS:我的Windows版本是10.0.10586


我遇到了同样的问题并找到了解决方案。您将需要更改默认侦听主机名。默认情况下,应用程序将侦听本地主机,忽略来自容器外部的任何传入请求。更改您的代码program.cs监听所有来电:

public class Program
{
    public static void Main(string[] args)
    {
        var host = new WebHostBuilder()
            .UseKestrel()
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseUrls("http://*:5000")
            .UseIISIntegration()
            .UseStartup<Startup>()
            .Build();

        host.Run();
    }
}

更多信息:

https://medium.com/trafi-tech-beat/running-net-core-on-docker-c438889eb5a#.hwhoak2c0 https://medium.com/trafi-tech-beat/running-net-core-on-docker-c438889eb5a#.hwhoak2c0

确保您正在使用以下命令运行容器-p带有端口绑定的标志。

docker run -p 5000:5000 <containerid>

在撰写本文时,似乎

EXPOSE 5000:5000

命令的效果与-p命令。我也没有在 -P (大写)方面取得真正的成功。

2016 年 8 月 28 日编辑:

有一点需要注意。如果您使用带有 -d(分离)模式的 docker compose,则可能需要一些时间dotnet run命令启动服务器。在执行完该命令(以及之前的任何其他命令)之前,您将收到ERR_EMPTY_RESPONSE in Chrome.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法访问本地 Docker 容器上的 Asp.Net Core 的相关文章

随机推荐