Files
lcbp3/specs/04-Infrastructure-OPS/04-00-docker-compose/Desk-5439/ocr-sidecar/docker-compose.yml
T
admin 2bbe67b4c5
CI / CD Pipeline / build (push) Successful in 5m56s
CI / CD Pipeline / deploy (push) Successful in 1m51s
690601:1911 ADR-032-232 #07.2 [skip CI]
2026-06-01 19:11:36 +07:00

63 lines
3.0 KiB
YAML

# File: specs/04-Infrastructure-OPS/04-00-docker-compose/Desk-5439/ocr-sidecar/docker-compose.yml
# Tesseract OCR Sidecar — รันบน Desk-5439 (AI Isolation Host) ตาม ADR-023A
# Change Log:
# - 2026-05-25: Initial compose file สำหรับ PaddleOCR HTTP sidecar
# - 2026-05-25: แก้ volumes ให้ถูกต้องสำหรับ Windows + Docker Desktop
# - 2026-05-30: เพิ่ม OCR_LANG=tha+eng (Tesseract Thai + English)
# - 2026-05-30: เพิ่ม Typhoon OCR environment variables (T009b, ADR-032)
# OLLAMA_API_URL ชี้ไปที่ http://192.168.10.100:11434 (Admin Desktop LAN IP)
# - 2026-05-30: Revert volumes กลับไปใช้ Windows Z: drive bind mount (แทน CIFS volume driver ที่พัง)
# - 2026-06-01: แก้ volumes เปลี่ยนจาก Z: drive bind mount (ไม่ทำงานบน WSL2)
# เป็น CIFS named volume ชี้ตรงไปที่ UNC path \\192.168.10.8\np-dms-as\data\uploads
# ต้องสร้างไฟล์ .env ที่ Desk-5439 (ดูตัวอย่างใน .env.example)
#
# วิธีรัน:
# docker compose up -d --build
#
# ทดสอบ:
# curl http://192.168.10.100:8765/health
name: lcbp3-ocr
services:
ocr-sidecar:
build:
context: .
dockerfile: Dockerfile
container_name: ocr-sidecar
restart: unless-stopped
ports:
- "8765:8765"
environment:
OCR_CHAR_THRESHOLD: "100"
OCR_PORT: "8765"
OCR_MAX_PAGES: "0"
OCR_LANG: "tha+eng" # Tesseract language code (Thai + English)
USE_GPU: "false" # OCR sidecar รันบน CPU, Typhoon OCR ใช้ Ollama แยก
# ─── Typhoon OCR via Ollama (ADR-032) ───────────────────────────────────
# ชี้ไปที่ Ollama ที่รันบน Desk-5439 ผ่าน LAN IP (ไม่ใช่ host.docker.internal)
OLLAMA_API_URL: "http://192.168.10.100:11434"
TYPHOON_OCR_MODEL: "scb10x/typhoon-ocr-3b"
# Timeout 120 วินาที/หน้า (budget สำหรับ 3B model บน RTX 2060 Super)
TYPHOON_OCR_TIMEOUT: "120"
volumes:
# Uploads จาก QNAP NAS ผ่าน WSL2 mount path
# Z: = \\192.168.10.8\np-dms-as → WSL2 เห็นเป็น /mnt/z
# Docker Desktop bind mount จาก Windows path ใช้ //wsl.localhost/ ไม่ได้
# แต่ใช้ Windows absolute path ของ Z: ได้ผ่าน Docker Desktop settings
# วิธีที่ใช้งานได้: ระบุ source เป็น Windows UNC path โดยตรง
- //192.168.10.8/np-dms-as/data/uploads:/mnt/uploads:ro
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8765/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 60s