我有2个应用程序在docker-compose下作为服务运行。
我正在尝试通过调用以下命令从我的React应用向Node.js服务器发出HTTP请求:
fetch("http://backend:4000/")
当我在
GET http://backend:4000/ net::ERR_NAME_RESOLUTION_FAILED
下访问我的React应用时,我在浏览器中得到http://localhost:3000
这是我的docker-compose文件。
version: "3.7"
services:
frontend:
build:
context: ./frontend
volumes:
- ./frontend:/app
ports:
- "3000:3000"
depends_on:
- "backend"
backend:
build:
context: ./backend
volumes:
- ./backend:/app
我正在运行Ubuntu,多年来一直遇到这个问题。没有任何真正的帮助-创建网络并为其分配服务,创建链接等。
奇怪的是,当我进入React应用程序容器并运行bash命令时:
ping backend
或curl http://backend:4000
,请求实际上可以正常工作。
最佳答案
我的猜测是,您正在尝试通过浏览器而不是前端容器来连接后端应用程序。如果是这样,那么您应该像这样显示后端端口;
backend:
container_name: backend
build:
context: ./backend
volumes:
- ./backend:/app
ports: #whatever the port number
- "4000:4000"
那么您应该在react应用上将网址从http://backend:4000更改为http://localhost:4000。
关于javascript - 无法在Docker容器之间发出HTTP请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57931056/