---
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/