You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向Docker部署的Node服务器发送HTTP GET请求?

如何向你的Docker化Node服务器发送HTTP GET请求

首先,你不需要使用容器内部的IP地址(172.17.0.2)——因为你已经通过-p 8081:8081完成了端口映射,把主机的8081端口转发到容器的对应端口。不过这里有个关键细节需要先修正,否则你的请求大概率会失败:

先解决端口不匹配的隐患

你的Node服务器代码里监听的端口逻辑是:

const port = process.env.PORT || 5001;

但你在Docker运行命令里没有设置PORT环境变量,同时端口映射的是8081:8081。这会导致服务器实际监听容器内的5001端口,而你把主机的8081映射到了容器的8081,两者端口不匹配,请求根本无法到达服务器。

你可以选以下任意一种方式修正:

  • 方式1:在Docker run命令中添加PORT环境变量,让服务器监听容器的8081端口:
    docker run -t -i --env private=0x12345 --env public=0x11111 --env PORT=8081 -p 8081:8081 game_server
    
  • 方式2:修改端口映射规则,把主机8081端口转发到容器的5001端口:
    docker run -t -i --env private=0x12345 --env public=0x11111 -p 8081:5001 game_server
    
  • 方式3:直接修改Node代码的默认端口为8081,省去环境变量配置:
    const port = process.env.PORT || 8081;
    

发送GET请求的正确方式

修正端口问题后,根据你的测试场景选择对应的地址:

1. 在运行Docker的主机上测试

直接用localhost加上映射的主机端口即可:

  • 调用complete_checkpoint接口(替换123和456为实际的reviewer和checkpoint ID):

    curl http://localhost:8081/api/complete_checkpoint/123/456
    

    也可以直接在浏览器地址栏输入这个地址测试。

  • 调用add_checkpoint接口(注意路径中的checkpoint名称需要URL编码,比如"Final Stage"要写成Final%20Stage):

    curl http://localhost:8081/api/add_checkpoint/Final%20Stage
    

    如果你不想手动编码,也可以用curl的--data-urlencode参数配合-G强制使用GET请求:

    curl -G http://localhost:8081/api/add_checkpoint --data-urlencode "checkpoint_name=Final Stage"
    

2. 从局域网内的其他机器测试

使用运行Docker的主机的局域网IP地址(比如你的主机IP是192.168.1.100)加上映射的主机端口:

curl http://192.168.1.100:8081/api/complete_checkpoint/123/456

3. 从公网测试(如果主机有公网IP)

使用主机的公网IP地址加上映射的主机端口即可,同时要确保主机的防火墙已经开放8081端口。

内容的提问来源于stack exchange,提问作者DHuang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:19:28