reactjs - 在运行反应应用程序的 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"]
我做错了什么还是不可能?
解决方案
在 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
推荐阅读
- java - Spring Security LDAP 身份验证并从本地数据库收集用户详细信息
- postgresql - 如何在 PostgresSQL 10 中备份分区表
- autocomplete - 如何更改 Visual Studio 代码自动更正花括号的方式?
- python - 通过 TensorFlow 消费大数据
- docker - 在 Kubernetes 集群中部署内部 docker 镜像
- html - 在 html 中显示多张图片,而无需为每一张都写一个标签
- dart - Flutter:覆盖触发重建中的文本字段
- javascript - 如何使用 javascript 显示/隐藏复数 div?
- java - 如果在 Java 中使用原始类型,如何强制编译错误以强制泛型类型参数?
- node.js - 如何在 Node.js 中正确调用 AWS.CloudFront.Signer?