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

求助:无法访问Docker容器内Flask服务器创建的API

问题:Docker部署Flask GET API后无法访问容器内端点

我基于Python Flask开发了GET API端点,将服务部署到Docker容器后,始终无法访问该API。已尝试常见解决方案但无效,以下是我的配置文件:

server.py 关键代码

if __name__ == '__main__':
    app.run(host="0.0.0.0", port=5000, debug=True)

Dockerfile

# syntax=docker/dockerfile:1
FROM python:3.10.4

WORKDIR /code

ENV FLASK_APP=server.py
ENV FLASK_RUN_HOST=0.0.0.0
ENV FLASK_DEBUG="true"

EXPOSE 5000

RUN pip install --upgrade pip

COPY requirements.txt requirements.txt

RUN pip install -r requirements.txt

COPY . .

# CMD ["python","server.py"]
CMD ["flask", "run", "--host", "0.0.0.0"]

docker-compose.yml

version: "3.9"

services:
  flask-server:
    build: ./flask-server/
    ports:
      - "5000:5000"
    restart: on-failure

同时我已准备了服务器运行状态和API调用失败的截图。


排查与解决步骤

1. 确认容器运行状态与日志

执行命令检查容器是否正常启动:

docker-compose ps
# 查看服务启动日志
docker-compose logs flask-server

确保日志中无报错,且显示Flask服务已成功启动(输出类似 Running on http://0.0.0.0:5000)。

2. 验证宿主机端口映射

在宿主机执行以下命令,确认端口5000已被Docker监听:

netstat -tulpn | grep 5000

如果端口被其他进程占用,修改docker-compose.yml中的宿主机端口(例如改为5001:5000),重新部署服务。

3. 测试容器内部API可用性

进入容器内部,直接调用API验证服务是否正常:

docker-compose exec flask-server curl http://localhost:5000/你的API路径

如果内部调用成功,说明问题出在宿主机到容器的网络映射;如果内部也失败,检查Flask代码是否存在路由定义错误。

4. 检查Flask路由配置

确保server.py中正确注册了GET路由,示例如下:

from flask import Flask
app = Flask(__name__)

@app.route('/api/test', methods=['GET'])
def test_api():
    return {"message": "Success"}

if __name__ == '__main__':
    app.run(host="0.0.0.0", port=5000, debug=True)

若路由缺失、路径不匹配或请求方法错误,会导致外部访问出现404或方法不允许的错误。

5. 开放宿主机端口/安全组

如果宿主机开启防火墙(如ufw、firewalld)或使用云服务器,需确保5000端口已开放:

# Ubuntu/Debian系统
sudo ufw allow 5000
# CentOS/RHEL系统
sudo firewall-cmd --add-port=5000/tcp --permanent
sudo firewall-cmd --reload

云服务器需在控制台安全组规则中添加5000端口的入站许可。

6. 检查Docker网络配置

默认docker-compose使用桥接网络,若自定义了网络规则,可尝试显式指定网络模式:

services:
  flask-server:
    build: ./flask-server/
    ports:
      - "5000:5000"
    restart: on-failure
    network_mode: bridge

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 22:31:15