【问题标题】:Docker containers unable to reach each other. Getting CONNECTION_REFUSEDDocker 容器无法相互访问。获得 CONNECTION_REFUSED
【发布时间】:2021-05-01 12:56:33
【问题描述】:

我是 Docker 新手,但这就是我想做的事情。拥有一个 create-react-app 和节点 API 服务器

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

我在项目的根目录下都有 Dockerfiles 和 docker-compose.yml。

现在,当我运行 docker-compose up 并尝试从 React 访问 API 服务器时,我收到 CONNECTION REFUSED 错误。

谁能帮我解决这个问题? React App 在 3000 上运行,API Server 在 9040 上运行

这里是 DockerFiles 和 docker-compose 文件

React 的 Dockerfile

FROM node:13.12.0-alpine

WORKDIR /app

COPY package*.json ./

RUN yarn install

COPY . .

EXPOSE 8080

EXPOSE 3000

CMD ["yarn", "run", "frontend"]

Node/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

我只想用一个命令运行两个容器

【问题讨论】:

    标签: node.js reactjs docker docker-compose create-react-app


    【解决方案1】:

    不要通过localhost:9040连接,而是尝试通过wt-server:9040连接

    【讨论】:

    • 哇,这就像一个魅力。你能解释一下为什么吗?
    • 每个服务都在一个单独的容器中运行,拥有自己的网络,因此您无法通过 localhost 连接到它们。您可以通过服务名称方便地连接到它们。另一种方法是使用network_mode: hostdocs.docker.com/network/host
    猜你喜欢
    • 1970-01-01
    • 2016-02-20
    • 2020-10-18
    • 2018-05-01
    • 1970-01-01
    • 2014-07-11
    • 2021-09-23
    • 1970-01-01
    • 2018-07-20
    相关资源
    最近更新 更多