Lui*_*ril 7 c# docker docker-networking asp.net-core-webapi
我是 docker 容器的新手,我遇到了以下问题。我正在开发一个向公开的 api 发出请求的网页。它们都发布在通过网络链接的不同容器上。这是我的 docker-compose.yml 文件:
version: '2'
services:
api:
image: my/api
networks:
- api
ports:
- "8080:5000"
container_name: api
web:
build:
context: ./DockerWeb
networks:
- api
ports:
- "80:5000"
container_name: web
networks:
api:
driver: bridge
Run Code Online (Sandbox Code Playgroud)
我注意到,如果我附加到运行我的网页的容器,我可以使用 ping api 容器而不会出现任何问题 ping api
尝试对 api 容器进行任何 Web 服务调用时会出现问题。我正在尝试初始化一个 HttpClient 对象,但是必须将此类对象的 BaseAddress 属性设置为有效的 Uri。
_client = new HttpClient();
_client.BaseAddress = new Uri(config.ApiUrl); //config.ApiUrl = "api"
Run Code Online (Sandbox Code Playgroud)
这会引发以下错误
UriFormatException:无效的 URI:无法确定 URI 的格式。
有没有办法 a) 以不同的方式公开容器名称,或者 b) 在不需要使用 URI 的情况下调用 Web 服务?我怎样才能做到这一点?
更新
我已更新 ApiUrl 以包含该值http:api:8080,但是现在执行调用时出现异常
System.AggregateException:发生一个或多个错误。(发送请求时出错。) ---> System.Net.Http.HttpRequestException:发送请求时出错。---> System.Net.Http.CurlException: 无法连接到服务器
我还尝试使用 wget 直接从我的 Web 容器调用 api 端点
wget http://api:8080/
Run Code Online (Sandbox Code Playgroud)
但是我仍然收到一个错误:
连接到 api (api)|172.24.0.4|:8080... 失败:连接被拒绝
这可能是 API 配置错误吗?
| 归档时间: |
|
| 查看次数: |
6400 次 |
| 最近记录: |