我只有2天的时间学习docker,而且我不知道如何找到如何连接两个服务的方法。因此,就我而言,我正在锻炼,
和我的docker-compose.yml看起来像这样:
version: '3.0'
services:
poll:
build: poll/.
ports:
- "5000:80"
networks:
- poll-tier
redis:
image: "redis"
expose:
- "6379"
worker:
build: worker/.
networks:
- back-tier
db:
image: "postgres"
volumes:
- "db-data:/var/lib/postgresql/data"
result:
build: result/.
networks:
- result-tier
volumes:
db-data:
networks:
poll-tier:
name: redis
result-tier:
name: db
back-tier:
name: redis, db
问题是,我如何与不同的服务进行通信?
答案 0 :(得分:1)
通过将网络添加到服务中,您将其限制为仅在该网络内进行通信,因此对于交叉通信,您需要添加多个网络。例如,在轮询服务中,您需要同时具有“轮询层”和“后端层”,以便轮询服务可以与Redis服务进行通信。
您的撰写文件应如下所示:
version: '3.0'
services:
poll:
build: poll/.
ports:
- "5000:80"
networks:
- poll-tier
redis:
image: "redis"
expose:
- "6379"
networks:
- back-tier
- poll-tier
worker:
build: worker/.
networks:
- back-tier
db:
image: "postgres"
volumes:
- "db-data:/var/lib/postgresql/data"
networks:
- back-tier
- result-tier
result:
build: result/.
networks:
- result-tier
volumes:
db-data:
networks:
poll-tier:{}
result-tier:{}
back-tier:{}