我在 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(使用前将#替换为@)