---
version: '3.7'

networks:
  sydney:
    name: sydney
  london:
    name: london

services:
  sydney-service:
    image: whatever
    hostname: sydney-service
    container_name: sydney-service
    networks:
      - sydney

  london-service:
    image: whatever
    hostname: london-service
    container_name: london-service
    environment:
      PAIR_SERVER: sydney-service:8080 # doesn't work
    networks:
      - london

我在docker compose文件中有多个网络。由于不同的服务位于不同的网络中,因此它们不会互相看到。如何将一个网络中的一项服务连接到另一网络中的另一项服务?

谢谢!

最佳答案

您可以通过将它们放置在同一网络中来进行连接。这是docker中网络的目的,也是通过docker网络连接docker容器的前提条件之一。

您可以在多个网络中拥有一个容器,这可以解决您面临的问题:

version: '3.7'

networks:
  sydney:
    name: sydney
  london:
    name: london
  global:

services:
  sydney-service:
    image: whatever
    hostname: sydney-service
    container_name: sydney-service
    networks:
      - sydney
      - global

  london-service:
    image: whatever
    hostname: london-service
    container_name: london-service
    environment:
      PAIR_SERVER: sydney-service:8080 # doesn't work
    networks:
      - london
      - global

另一个选择是绕过容器网络,并在已发布的端口上与其他服务进行通信。在这种情况下,主机名是docker主机,端口是已发布的端口,而不是容器端口。如果您的目的是能够在使用撰写文件部署的容器之间进行通信,则建议您不要这样做。

关于docker - 如何在Docker Compose中连接不同网络中的容器?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57617673/

10-16 23:47