reactjs - 在运行 react 应用程序的 Docker 容器中代理 API 请求

标签 reactjs docker proxy

我在 docker 容器中运行一个简单的 react 应用程序。在开发过程中,我在 package.json 中使用代理 key 。指定我的后端 api url:"proxy": "http://localhost:5000"
当我运行 npm start 时一切正常本地。但是,当我 npm start在 docker 容器内它指向 "http://localhost:3000" .我也尝试手动设置代理,如下面的 Dockerfile 所示,但似乎没有任何效果:

FROM node:13-alpine
WORKDIR /app

# install dependencies
COPY package*.json ./
RUN npm install --silent

# copy source code
COPY src/ ./src/
COPY public/ ./public/

RUN npm config set proxy http://localhost:5000  # set manully
CMD ["npm", "start"]

我做错了什么还是不可能?

最佳答案

在 docker 中运行应用程序时,您需要将端口设置为后端服务而不是 localhost。例如,检查以下 docker 容器及其服务。我们在端口 3000 中运行前端和后端在端口 5000 中运行.因此,将 localhost 替换为 "proxy": "http://backend:5000"

version: '3'

services:
  backend:
    build: ./backend
    ports:
      - 5000:5000
  frontend:
    build: ./frontend
    ports:
      - 3000:3000
    links:
      - backend
    command: npm start

关于reactjs - 在运行 react 应用程序的 Docker 容器中代理 API 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59003599/

相关文章:

reactjs - 使用 React Router 以编程方式导航,无需重复路径

python - Docker-compose 日志仅显示 "Attaching to"而没有其他内容

linux - 如何使用 ssh 和 Travis CI 进行自定义部署?

docker - 在Docker客户端中使用默认的容器名称作为默认名称

java - 无法通过代理建立隧道。代理返回 HTTP/1.1 503 服务不可用

java - JSoup在爬取时设置代理IP

java - 在 JavaFX WebEngine 上设置代理?

javascript - 在 React 应用程序中切换到 TypeScript 的问题

reactjs - ES6如何进行多个默认导出

javascript - 事件监听器没有被删除