我的docker集群中有两个服务。frontend
在端口8090
上运行,而backend
在端口8000
上运行。如何让frontend
像fetch('https://backend.local/')
一样通过本地DNS调用backend
?因为如果我使用docker主机名,我需要指定调用后端的端口。我需要在我的docker中有一个本地DNS服务器吗?
您必须在docker中创建一个软件定义网络(SDN(,然后在该网络中运行的所有容器都可以使用容器名称相互通信,或者您可以为每个容器定义别名并使用它。可以使用以下配置为后端微服务和mysql数据库创建一个简单的docker组合文件。
version: '3.2'
networks:
testNetwork:
services:
mysql-dev:
image: mysql:latest
container_name: mysql-dev
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=root
ports:
- "3306:3306"
networks:
- testNetwork
backend:
image: backend:1.0
container_name: backend
environment:
- DB_USER=root
- DB_PASS=root
- DB_NAME=root
- DB_HOST=mysql-dev
- DB_DIALECT=mysql
ports:
- "4000:4000"
working_dir: /backend
command: npm start
networks:
- testNetwork