使用同一主机上的docker在两个asp.net服务之间进行通信
我目前正试图在docker中托管两个asp.net核心服务。我可以让它们都启动并运行,但问题是我不知道如何在两个容器之间进行通信 我使用docker compose启动并运行应用程序,并在主机上分配端口 服务的URL位于appsettings.json中。我认为问题出在这里,因为我不知道从哪里获得运行容器的正确IP 我已经尝试在两个docker compose文件中使用主机网络,但都无法正常工作 我还尝试使用docker container inspect获取容器的IP。但这些IP是无法访问的 docker由服务1组成:使用同一主机上的docker在两个asp.net服务之间进行通信,asp.net,docker,docker-compose,Asp.net,Docker,Docker Compose,我目前正试图在docker中托管两个asp.net核心服务。我可以让它们都启动并运行,但问题是我不知道如何在两个容器之间进行通信 我使用docker compose启动并运行应用程序,并在主机上分配端口 服务的URL位于appsettings.json中。我认为问题出在这里,因为我不知道从哪里获得运行容器的正确IP 我已经尝试在两个docker compose文件中使用主机网络,但都无法正常工作 我还尝试使用docker container inspect获取容器的IP。但这些IP是无法访问的
version: '3.4'
services:
leave.api:
build:
context: .
dockerfile: app1/Dockerfile
environment:
- ASPNETCORE_ENVIRONMENT=Development
ports:
- 5002:5002
docker由服务2组成:
version: '3.4'
services:
backoffice:
build:
context: .
dockerfile: BackOffice/Dockerfile
environment:
- ASPNETCORE_ENVIRONMENT=Development
ports:
- 5001:5001
我希望找到一种能够在这两种服务之间进行通信的方法。您可以使用外部链接选项,这似乎是最适合您的解决方案:
这解释了桥接容器
如果您的通信是基于http的,我建议使用http网关来跟踪您的容器及其服务端点。您可以使用服务名称在docker容器中的两个服务之间进行通信 在您的情况下,docker合成文件中有backoffice和leave.api服务
因此,您可以使用从leave.api访问backoffice服务。谢谢您的回答,但我找到了另一个最适合我的解决方案 我在两个docker compose文件中添加了以下行:
network_mode: bridge
这样,我的两个容器使用相同的网络。之后,我可以使用主机ip地址和服务绑定的端口在容器之间进行通信。我将这个IP放在appsettings.json中的方式与之前相同