我有这个 docker compose 文件显示的文件
version: '3'
services:
backend-flask:
build: ./backend
frontend-fligh:
build: ./frontend-fligh
ports:
- "3000:3000"
depends_on:
- backend-flask
在我的前端中,我尝试通过以下方式进行后端 api 调用
const response = await fetch('http://backend-flask:5000/search', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(query)
});
但是这个请求给我返回了这个错误 POST http://backend-flask:5000/search net::ERR_NAME_NOT_RESOLVED
在我的后端 Flask 应用程序的 app.py 中,也定义了路由
app = Flask(__name__)
CORS(app) #for production change to have only my site
@app.route('/search', methods=['POST'])
//more code
另请注意,如果我将其从 backend-flask 更改为 localhost:5000/search ,这会起作用
我检查了网络,容器都在同一个网络中,我真的迷失了方向,不知道为什么它不起作用
jasonwang@Jasons-MacBook-Pro startUp % docker network inspect startup_default
[
{
"Name": "startup_default",
"Id": "f9507df9f26968c4665da09bf90b24904267b177476c3654197d4b9afbf1dd78",
"Created": "2023-08-25T02:26:45.523880875Z",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.19.0.0/16",
"Gateway": "172.19.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"1278a785f11c2227638d12aba3c5286a29346134801b43481fcedc5d15037b12": {
"Name": "startup-redis-1",
"EndpointID": "cfaf2be033ce04fd9f7cdd5cba4d287d0d3a9ee77edd79324fe8b6dfd2a93ca6",
"MacAddress": "02:42:ac:13:00:02",
"IPv4Address": "172.19.0.2/16",
"IPv6Address": ""
},
"5ca87c376d0342d67e07a2452f2ae188af710c65753894fdddda99bb05e0e902": {
"Name": "startup-backend-flask-1",
"EndpointID": "24bd57249b98e595b54846d5581655798730b3eb475624fe057599ad1f492b5c",
"MacAddress": "02:42:ac:13:00:03",
"IPv4Address": "172.19.0.3/16",
"IPv6Address": ""
},
"6a968c8e2bad884cc56540cc43699dc51c479486693e60209add3e890e84d94c": {
"Name": "startup-frontend-fligh-1",
"EndpointID": "36598650abb0c25cde0da3442f587771a947f1c8b119f5455834b0d699fa82e1",
"MacAddress": "02:42:ac:13:00:04",
"IPv4Address": "172.19.0.4/16",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {
"com.docker.compose.network": "default",
"com.docker.compose.project": "startup",
"com.docker.compose.version": "2.20.2"
}
}
]
docker ps如下所示
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ec952f0dd6fe fligh-frontend-fligh "docker-entrypoint.s…" 2 hours ago Up 58 seconds 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp fligh-frontend-fligh-1
55aba3e48d6b fligh-backend-flask "flask run" 2 hours ago Up 58 seconds 0.0.0.0:8000->5000/tcp, :::8000->5000/tcp fligh-backend-flask-1
433bb688fc71 redis:alpine "docker-entrypoint.s…" 3 hours ago Up 58 seconds 6379/tcp fligh-redis-1
根据
docker compose ps
命令的输出,您的后端正在侦听端口 8000
,您已在端口 5000
上转发到主机。所以你必须使用 http://backend-flask:8000
或 http://localhost:5000
。