无法从浏览器

时间:2018-06-03 12:35:50

标签: docker asp.net-core .net-core docker-compose ubuntu-16.04

我有一个.NET Core 2.1 API,当通过Windows中的Visual Studio运行时,它从浏览器接收HTTP GET并成功从MySQL DB返回数据。

我一直在尝试将API添加到Docker容器(在Ubuntu内部) - 这构建,但我无法从浏览器访问API:

Firefox

我尝试了什么

  • 检查可用端口。这是相关的输出:

enter image description here

  • 使用其他浏览器进行连接:在Chromium中,它表示无法访问此网站: localhost 意外关闭了连接。'
  • 在浏览器中测试未使用的端口以查看是否返回不同的消息 - 对于Firefox,未使用的端口返回'无法连接'而不是“安全连接失败”,而在Chromium中,他们返回“localhost”拒绝连接。'而不是' localhost意外关闭了连接。'
  • 在Firefox中,配置' security.tls.insecure_fallback_hosts'到' localhost'。
  • 仔细检查端口是否在docker-compose.yml中正确映射 - 在' ports'对于相关容器,44329映射到44329。
  • 在API启动时运行数据库查询并记录结果:这是成功的。我运行docker-compose up,API启动,连接到数据库容器,并将SQL查询的结果记录到文本文件中。所以这个问题不太可能与数据库有任何关系。
  • 记录GET请求:在Windows中,成功记录了GET请求,但是在Ubuntu Docker容器中,它们没有。

这可能是相关的:在Windows中,只有从Visual Studio启动API时,API才能正常工作。如果执行dotnet webapi.dll,则会获得此输出

...\netcoreapp2.1>dotnet webapi.dll
...
Now listening on: http://localhost:5000
Now listening on: https://localhost:5001
Application started. Press Ctrl+C to shut down.

所以这里没有在44329上运行;相反,它可以通过浏览器中的5001访问,在那里你得到的信息根本不是冷却: enter image description here 点击' ADVANCED'允许您继续使用API​​。

  • 所以我也试过在Ubuntu中通过5001连接而没有运气。

来自' docker-compose up'的输出:

matt@Matt-Ubuntu:~/docker2$ docker-compose up
Starting docker2_mysql_1 ... done
Starting docker2_dbmodelmapper_1 ... done
Attaching to docker2_mysql_1, docker2_dbmodelmapper_1
... (mysql stuff) ...
dbmodelmapper_1  | Hosting environment: Production
dbmodelmapper_1  | Content root path: /app
dbmodelmapper_1  | Now listening on: http://[::]:80
dbmodelmapper_1  | Application started. Press Ctrl+C to shut down.
  • 看到端口80,我尝试连接到端口,但没有成功。

  • docker ps所示的相关容器是:

    enter image description here

我在这看什么样的问题?

1 个答案:

答案 0 :(得分:1)

正如评论中的多个人所指出的那样(感谢sp0gg,Martin Ullrich和Daniel Lerps),API错误地在端口80上侦听。

解决方案是将端口5000映射到docker-compose.yml中的44容器容器,并在启动ASP.NET API时修改Dockerfile以将端口作为参数传递给dotnet:

ENTRYPOINT ["dotnet", "webapi.dll", "--urls", "http://*:5000;http://*:5001"]