[英]Unable to access Docker application from browser
我有一个.NET Core 2.1 API,当通过Windows中的Visual Studio运行时,该API会从浏览器接收HTTP GET,并成功地从MySQL DB返回数据。
我一直在尝试将API添加到Docker容器(在Ubuntu内)-可以构建,但是我无法从浏览器访问API:
我尝试过的
docker-compose up
,API启动,连接到DB容器,并将SQL查询的结果记录到文本文件中。 因此,问题不太可能与数据库有关。 这可能是相关的:在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来访问它,在这里您会得到以下消息,这一点都不令人寒寒: 单击“高级”可以继续使用API。
这是“ 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.
我在这里看什么问题?
正如多人在评论中指出的(感谢sp0gg,Martin Ullrich和Daniel Lerps),该API错误地侦听了端口80。
解决方案是在API容器的docker-compose.yml中将端口5000映射到44329,还修改Dockerfile以在启动ASP.NET API时将端口作为参数传递给dotnet:
ENTRYPOINT ["dotnet", "webapi.dll", "--urls", "http://*:5000;http://*:5001"]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.