无法使用容器名称将反应容器连接到节点容器

问题描述 投票:0回答:1

我想使用容器名称在react(前端)容器和节点(后端)容器之间创建连接。

反应(前端)dockerfile:

> FROM node:18-alpine as builder WORKDIR /frontend-docker-example/
> EXPOSE 3000
> 
> COPY package*.json /frontend-docker-example/ RUN npm install COPY
> public/ /frontend-docker-example/public 
> COPY src/ /frontend-docker-example/src 
> CMD ["npm", "start"]

节点(后端)dockerfile:

FROM node:18-alpine as builder
WORKDIR /backend-docker-example/
EXPOSE 5000

COPY package*.json /backend-docker-example/
RUN npm install
COPY app.js  /backend-docker-example/app.js
CMD [ "npm", "start" ]

docker-compose.yaml

version: '3.1'

services:
  #Frontend Service
  client:
    container_name: client
    build: 
      context: ./client
    ports:
      - "3000:3000"
    depends_on:
      - server

  server:
    container_name: server
    build: 
      context: ./server

反应代码:

const response = await fetch('http://server:5000/add',{ .... }

节点代码:

app.use(cors({
    origin: '*'
}))

错误:

POST http://server:5000/add net::ERR_NAME_NOT_RESOLVED

两个容器与使用的 docker compose 位于同一网络中。为了确保安全,我还使用 dockerspect 检查了两个容器的 IP。还检查了 DNS 解析。

docker exec -it react-frontend sh
然后
ping server
我可以成功 ping 和curl 并得到响应,但不能在本地主机上。我该如何解决这个问题?

reactjs node.js docker docker-compose cors
1个回答
0
投票

无法在本地主机上

对于服务器 docker-compose 端口,添加以下内容:

- '127.0.0.1:5000:5000'

© www.soinside.com 2019 - 2024. All rights reserved.