Api 网关看不到 docker 容器中的其他服务
Api Gateway not see other services in docker container
我在使用 docker-compose
对我的小型微服务项目进行容器化时遇到问题。在构建并在下面编写之后,我看到一切正常,所有服务都是 运行,但现在我有一个问题。我的 api-gateway
服务没有连接到其他服务,当 api-gateway 试图向 eq 发出请求时。 account-service
然后控制台给我这个:
api-gateway | [Nest] 1 - 05/21/2022, 9:38:51 PM ERROR [ExceptionsHandler] connect ECONNREFUSED 127.0.0.1:3002
所以,我认为问题出在我的容器中,在他的所有服务之间。
有人能告诉我我做错了什么吗?
这是我的 docker-compose.yml
version: '3'
networks:
backend:
driver: bridge
services:
api:
container_name: api-gateway
build:
context: .
dockerfile: ./apps/api/Dockerfile
restart: always
hostname: api
env_file:
- .env
ports:
- "3000:3000"
networks:
- backend
account:
container_name: account-service
build:
context: .
dockerfile: ./apps/account/Dockerfile
restart: always
hostname: account
env_file:
- .env
ports:
- "3001:3001"
networks:
- backend
workspace:
container_name: workspace-service
build:
context: .
dockerfile: ./apps/workspace/Dockerfile
restart: always
hostname: workspace
env_file:
- .env
ports:
- "3002:3002"
networks:
- backend
Docker 文件
FROM node:14.8.0-alpine as develop
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build workspace
CMD node dist/apps/workspace/main
Dockerfile 对于所有服务都是一样的。
感谢您的帮助!
在 docker compose 中,服务在与其容器名称(在本例中为 api-service
、account-service
、workspace-service
)或其容器名称相对应的主机名下相互可用名称(api
、account
、workspace
)如果未设置容器名称。
因此,为了在服务中发出请求,您需要将请求发送至
"http://workspace-service:3002"
而不是
"http://localhost:3002"
我在使用 docker-compose
对我的小型微服务项目进行容器化时遇到问题。在构建并在下面编写之后,我看到一切正常,所有服务都是 运行,但现在我有一个问题。我的 api-gateway
服务没有连接到其他服务,当 api-gateway 试图向 eq 发出请求时。 account-service
然后控制台给我这个:
api-gateway | [Nest] 1 - 05/21/2022, 9:38:51 PM ERROR [ExceptionsHandler] connect ECONNREFUSED 127.0.0.1:3002
所以,我认为问题出在我的容器中,在他的所有服务之间。
有人能告诉我我做错了什么吗?
这是我的 docker-compose.yml
version: '3'
networks:
backend:
driver: bridge
services:
api:
container_name: api-gateway
build:
context: .
dockerfile: ./apps/api/Dockerfile
restart: always
hostname: api
env_file:
- .env
ports:
- "3000:3000"
networks:
- backend
account:
container_name: account-service
build:
context: .
dockerfile: ./apps/account/Dockerfile
restart: always
hostname: account
env_file:
- .env
ports:
- "3001:3001"
networks:
- backend
workspace:
container_name: workspace-service
build:
context: .
dockerfile: ./apps/workspace/Dockerfile
restart: always
hostname: workspace
env_file:
- .env
ports:
- "3002:3002"
networks:
- backend
Docker 文件
FROM node:14.8.0-alpine as develop
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build workspace
CMD node dist/apps/workspace/main
Dockerfile 对于所有服务都是一样的。
感谢您的帮助!
在 docker compose 中,服务在与其容器名称(在本例中为 api-service
、account-service
、workspace-service
)或其容器名称相对应的主机名下相互可用名称(api
、account
、workspace
)如果未设置容器名称。
因此,为了在服务中发出请求,您需要将请求发送至
"http://workspace-service:3002"
而不是
"http://localhost:3002"