【问题标题】:Unable to access .net core api URL after hosting in docker在 docker 中托管后无法访问 .net core api URL
【发布时间】:2019-01-15 17:28:28
【问题描述】:

我有 VS 2017。Dotnet 核心 2.1 我的是 Windows 10 和 Docker for windows 安装。 Windows 版本为 10.0.16299.904 Docker 版本是社区 18.09.0 的客户端和服务器

我只是创建了一个新文件-> 新建-> 项目-> .Net Core -> Asp.net Core Web 应用程序-> Api 启用了 Docker 复选框。

在没有做任何更改的情况下,我构建它尝试在 IIS Express 和 Docker 中运行它,并且默认情况下它将 /api/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 但出现以下错误:

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

【问题讨论】:

  • 你试过 localhost:1598 吗?

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


【解决方案1】:

是的,您使用了错误的 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:5000localhost:5000.

您还应确保接受其中的任何主机名 Main()Program.cs.UseUrls("http://*:5000/") 在你的 WebHostBuilder.

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

【讨论】:

  • 你的意思是localhost:1598localhost:1598/api/values。我在 chrome 浏览器中都试过了。
  • 我的意思是路径在最后,所以http://localhost:1598/api/values。这行得通吗?
  • 我在 chrome 浏览器中尝试了这两个网址。它一直显示加载并且不会发生。
  • docker run -d --restart=always -p 1598:80 webapplication1
  • 另外,请参阅this answer,这可能与您的问题有关。我不完全确定细节。
【解决方案2】:

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

尝试通过

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

然后通过

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

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

【讨论】:

    猜你喜欢
    • 2021-09-12
    • 1970-01-01
    • 1970-01-01
    • 2020-08-17
    • 2018-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多