【发布时间】:2019-01-09 22:04:31
【问题描述】:
我目前正在一个解决方案中处理两个相互关联的 ASP.NET Core WebAPI 服务(Service1 和 Service2)。两者都有 docker 文件并暴露了 80 端口。
Service1 是一个独立的服务,需要从Service2 调用。我已经给出了 docker-compose.yml 和 docker-compose.override.yml。
docker-compose.yml
version: '3.4'
services:
services1:
image: ${DOCKER_REGISTRY-}services1
network_mode: bridge
build:
context: .
dockerfile: Services1/Dockerfile
ports:
- "501:80"
services2:
image: ${DOCKER_REGISTRY-}services2
network_mode: bridge
build:
context: .
Services2/Dockerfile
ports:
- "502:80"
docker-compose.override.yml
version: '3.4'
services:
services1:
build:
context: .
dockerfile: Services1/Dockerfile
environment:
- ASPNETCORE_ENVIRONMENT=Development
ports:
- "1001:80"
services2:
build:
context: .
dockerfile: Services2/Dockerfile
environment:
- ASPNETCORE_ENVIRONMENT=Development
- SERVICE1=http://localhost:1001
ports:
- "1002:80"
当我使用 network_mode: bridge 从 http://localhost:1002 呼叫 http://localhost:1001 时,我收到以下异常。
{System.Net.Http.HttpRequestException:无法分配请求的地址 ---> System.Net.Sockets.SocketException: 无法分配请求的地址
当我将 network_mode 更改为主机 ( network_mode:host ) 时,我收到以下异常。
System.IO.IOException: '无法绑定到地址http://[::]:80: 地址已在使用中。'
所以请告诉我如何解决这个问题。
【问题讨论】:
标签: docker asp.net-core