[英]Nodejs and React inside docker containers
我正在尝试在 Docker 容器中运行 Node/React 项目。 我有一个用于 API 和客户端应用程序的 NodeJS 服务器。 我还concurrently
安装了,运行npm run dev
时一切正常。
这个问题是当我通过docker-compose.yml
文件运行服务器和应用程序时,我从客户端收到以下错误:
client | [HPM] Error occurred while trying to proxy request /api/current_user from localhost:3000 to http://localhost:5000 (ECONNREFUSED) (https://nodejs.org/api/errors.html#errors_common_system_errors)
这是docker-compose.yml
version: "3"
services:
frontend:
container_name: client
build:
context: ./client
dockerfile: Dockerfile
image: client
ports:
- "3000:3000"
volumes:
- ./client:/usr/src/app
networks:
- local
backend:
container_name: server
build:
context: ./
dockerfile: Dockerfile
image: server
ports:
- "5000:5000"
depends_on:
- frontend
volumes:
- ./:/usr/src/app
networks:
- local
networks:
local:
driver: bridge
服务器 Dockerfile
FROM node:lts-slim
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
EXPOSE 5000
# You can change this
CMD [ "npm", "run", "dev" ]
客户端 Dockerfile
FROM node:lts-slim
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
EXPOSE 3000
CMD [ "npm", "start" ]
我正在使用"http-proxy-middleware": "^0.21.0"
所以我的setupProxy.js
是
const proxy = require('http-proxy-middleware');
module.exports = function(app) {
app.use(proxy('/auth/google', { target: 'http://localhost:5000' }));
app.use(proxy('/api/**', { target: 'http://localhost:5000' }));
};
您应该使用container_name而不是 localhost
app.use(proxy('/auth/google', { target: 'http://localhost:5000' }));
app.use(proxy('/api/**', { target: 'http://localhost:5000' }));
您还可以通过使用以下命令检查您的网络来检查这些详细信息:-
docker inspect <network_name>
它将显示所有连接到网络的容器,以及为这些容器创建的主机名。
注意:主机名是基于 container_names 创建的,否则基于服务名。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.