首页 > 解决方案 > 在运行反应应用程序的 Docker 容器中代理 API 请求

问题描述

我在 docker 容器中运行一个简单的反应应用程序。在开发过程中,我使用代理密钥package.json来指定我的后端 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"]

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

标签: reactjsdockerproxy

解决方案


在 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


推荐阅读