使用同一主机上的docker在两个asp.net服务之间进行通信

使用同一主机上的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是无法访问的

我目前正试图在docker中托管两个asp.net核心服务。我可以让它们都启动并运行,但问题是我不知道如何在两个容器之间进行通信

我使用docker compose启动并运行应用程序,并在主机上分配端口

服务的URL位于appsettings.json中。我认为问题出在这里,因为我不知道从哪里获得运行容器的正确IP

我已经尝试在两个docker compose文件中使用主机网络,但都无法正常工作

我还尝试使用docker container inspect获取容器的IP。但这些IP是无法访问的

docker由服务1组成:

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中的方式与之前相同