在Docker中托管后无法访问.net核心api URL

时间:2019-01-12 12:57:22

标签: docker asp.net-core windows-10

我有VS2017。Dotnet core 2.1 我的是Windows 10和安装了Windows的Docker。 Windows版本是10.0.16299.904 Docker版本是客户端和服务器的社区18.09.0

我只是创建了一个新的File-> New-> Project-> .Net Core-> Asp.net Core Web Application->启用了Docker复选框的Api。

我没有进行任何更改,而是尝试在IIS Express和Docker中运行它,并且在默认情况下将/ api / values控制器响应显示为Values。

现在在ps提示符下,我可以看到图像,因此创建了相应的容器。

在docker ps -a命令上,它列出了端口1598-> 80 / tcp的正在运行的容器

我用docker inspect列出了json,显示的IP是172.22.74.213。

我使用http://172.22.74.213:1598/api/values访问我的api,但出现以下错误:

enter image description here

使用docker inspect表示容器正在运行。 我使用错误的URL来访问我的api吗?

2 个答案:

答案 0 :(得分:2)

这与VS 2017构建的图像有关。

尝试通过

建立自己的图像
D:\xx\TestPro>docker build -f DockerTestPro/dockerfile -t docker0115 .

然后通过

运行容器
docker run -it -p 8066:80 docker0115

然后,通过http://localhost:8066/

访问

答案 1 :(得分:0)

是的,您使用的IP错误。只需按http://localhost:1598/api/values,因为Docker for Windows不会(默认)为暴露的端口绑定到其他IP。

编辑

此外,请确保在运行容器时实际上公开了端口。另请查看有关允许任何主机名从this answer to a similar question连接的dotnet API的详细信息:

  

检查是否也在启动映像时打开了端口:

     

docker run -it -p 5000:5000 <imagename>

     

这会将实例内部的端口5000打开到您的端口5000上   本地计算机,然后应该可以在127.0.0.1:5000上访问,或者   localhost:5000

     

您还应该确保您接受以下主机名   Main()中的Program.cs与您的.UseUrls("http://*:5000/")   WebHostBuilder

在您的情况下,您将需要以下端口绑定:1598:80