我的 docker 集群中有 2 个服务。 frontend
在端口 8090
上运行,而 backend
在端口 8000
上运行。如何通过本地 DNS(如 frontend
)使 backend
呼叫 fetch('https://backend.local/')
?因为如果我使用docker-hostname,我需要指定端口来调用后端。我的 docker 中需要有本地 DNS 服务器吗?
答案 0 :(得分:0)
您必须在 docker 中创建一个软件定义网络 (SDN),然后在该网络中运行的所有容器都可以使用容器名称相互通信,或者您可以为每个容器定义别名并使用它。可以使用以下配置为后端微服务和 mysql 数据库创建一个简单的 docker-compose 文件。
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