Node.js Docker集装箱无法相互接触。获得连接被拒绝

Node.js Docker集装箱无法相互接触。获得连接被拒绝,node.js,reactjs,docker,docker-compose,create-react-app,Node.js,Reactjs,Docker,Docker Compose,Create React App,我是Docker的新手,但我想做的是。拥有一个createreact应用程序和节点API服务器 两者都是客户端和服务器上的不同文件夹 我在项目的根目录下有docker-compose.yml和docker-compose.yml的DockerFile 现在,当我运行docker compose并尝试从React访问API服务器时,我发现连接被拒绝错误 有人能帮我吗?React应用程序在3000上运行,API服务器在9040上运行 以下是DockerFile和docker compose文件 Re

我是Docker的新手,但我想做的是。拥有一个createreact应用程序和节点API服务器

两者都是客户端和服务器上的不同文件夹

我在项目的根目录下有docker-compose.yml和docker-compose.yml的DockerFile

现在,当我运行docker compose并尝试从React访问API服务器时,我发现连接被拒绝错误

有人能帮我吗?React应用程序在3000上运行,API服务器在9040上运行

以下是DockerFile和docker compose文件

React的Dockerfile

节点/Express API的Dockerfile

FROM node:12

WORKDIR /app

COPY package*.json ./

RUN yarn install

COPY . .

EXPOSE 9040

CMD ["yarn", "run", "backend"]
Docker编写文件

version: "3"
services:
  wt-client:
    image: sriram2207/wt-client
    stdin_open: true
    ports:
      - "3000:3000"
      - "8080:8080"
    networks:
      - wt-app
  wt-server:
    image: sriram2207/wt-server
    ports:
      - "9040:9040"
    networks:
      - wt-app
networks:
  wt-app:
    driver: bridge

我要做的就是用一个命令运行两个容器,而不是通过localhost:9040连接,尝试通过wt-server:9040连接,而不是通过localhost:9040连接,尝试通过wt-server:9040连接,这真是太棒了。您能解释一下为什么吗?每个服务都运行在一个单独的容器中,有自己的网络,因此您无法通过localhost连接到它们。您可以通过服务名称方便地连接到它们。另一种方法是使用网络模式:像魔咒一样工作的Wow主机。您能解释一下为什么吗?每个服务都运行在一个单独的容器中,有自己的网络,因此您无法通过localhost连接到它们。您可以通过服务名称方便地连接到它们。另一种方法是使用网络模式:主机
version: "3"
services:
  wt-client:
    image: sriram2207/wt-client
    stdin_open: true
    ports:
      - "3000:3000"
      - "8080:8080"
    networks:
      - wt-app
  wt-server:
    image: sriram2207/wt-server
    ports:
      - "9040:9040"
    networks:
      - wt-app
networks:
  wt-app:
    driver: bridge