Files
doc_processer/PORT_CONFIGURATION.md
2026-02-05 22:20:01 +08:00

3.4 KiB

端口配置检查总结

搜索命令

# 搜索所有 8000 端口引用
rg "(127\.0\.0\.1|localhost):8000"

# 或使用 grep
grep -r -n -E "(127\.0\.0\.1|localhost):8000" . \
  --exclude-dir=.git \
  --exclude-dir=__pycache__ \
  --exclude-dir=.venv \
  --exclude="*.pyc"

当前端口配置

PaddleOCR-VL 服务 (端口 8001)

代码文件 - 全部正确 :

  • app/core/config.py:25http://127.0.0.1:8001/v1
  • app/services/ocr_service.py:492http://localhost:8001/v1
  • app/core/dependencies.py:53http://localhost:8001/v1 (fallback)
  • Dockerfile:18http://127.0.0.1:8001/v1

Mineru API 服务 (端口 8000)

代码文件 - 全部正确 :

  • app/core/config.py:28http://127.0.0.1:8000/file_parse
  • app/services/ocr_service.py:489http://127.0.0.1:8000/file_parse
  • app/core/dependencies.py:52http://127.0.0.1:8000/file_parse (fallback)

文档和示例文件

以下文件包含示例命令,使用 localhost:8000,这些是文档用途,不影响实际运行:

  • docs/*.md - 各种 curl 示例
  • README.md - 配置示例 (使用 8080)
  • docker-compose.yml - 使用 8080
  • openspec/changes/add-doc-processing-api/design.md - 设计文档

验证服务端口

1. 检查 vLLM (PaddleOCR-VL)

# 应该在 8001
lsof -i:8001

# 验证模型
curl http://127.0.0.1:8001/v1/models

2. 检查 Mineru API

# 应该在 8000
lsof -i:8000

# 验证健康状态
curl http://127.0.0.1:8000/health

3. 检查你的 FastAPI 应用

# 应该在 8053
lsof -i:8053

# 验证健康状态
curl http://127.0.0.1:8053/health

修复历史

已修复的问题

  1. app/services/ocr_service.py:492

    • 从: paddleocr_vl_url: str = "http://localhost:8000/v1"
    • 到: paddleocr_vl_url: str = "http://localhost:8001/v1"
  2. Dockerfile:18

    • 从: PADDLEOCR_VL_URL=http://127.0.0.1:8000/v1
    • 到: PADDLEOCR_VL_URL=http://127.0.0.1:8001/v1
  3. app/core/config.py:25

    • 已经是正确的 8001

环境变量配置

如果需要自定义端口,可以设置环境变量:

# PaddleOCR-VL (默认 8001)
export PADDLEOCR_VL_URL=http://127.0.0.1:8001/v1

# Mineru API (默认 8000)
export MINER_OCR_API_URL=http://127.0.0.1:8000/file_parse

或在 .env 文件中:

PADDLEOCR_VL_URL=http://127.0.0.1:8001/v1
MINER_OCR_API_URL=http://127.0.0.1:8000/file_parse

Docker 部署注意事项

在 Docker 容器中,使用:

  • --network host: 使用 127.0.0.1
  • --network bridge: 使用 host.docker.internal 或容器名

示例:

docker run \
  --network host \
  -e PADDLEOCR_VL_URL=http://127.0.0.1:8001/v1 \
  -e MINER_OCR_API_URL=http://127.0.0.1:8000/file_parse \
  doc-processer

快速验证脚本

#!/bin/bash
echo "检查端口配置..."

# 检查代码中的配置
echo -e "\n=== PaddleOCR-VL URLs (应该是 8001) ==="
rg "paddleocr_vl.*8\d{3}" app/

echo -e "\n=== Mineru API URLs (应该是 8000) ==="
rg "miner.*8\d{3}" app/

# 检查服务状态
echo -e "\n=== 检查运行中的服务 ==="
echo "Port 8000 (Mineru):"
lsof -i:8000 | grep LISTEN || echo "  未运行"

echo "Port 8001 (PaddleOCR-VL):"
lsof -i:8001 | grep LISTEN || echo "  未运行"

echo "Port 8053 (FastAPI):"
lsof -i:8053 | grep LISTEN || echo "  未运行"

保存为 check_ports.sh,然后运行:

chmod +x check_ports.sh
./check_ports.sh