# ใช้ Python 3.13 ตามที่ระบุใน pyproject.toml FROM python:3.13-slim # ติดตั้ง dependencies สำหรับการจัดการรูปภาพ ระบบ และการใช้ Ollama (เพิ่ม curl, procps) RUN apt-get update && apt-get install -y \ libgl1 \ libglib2.0-0 \ build-essential \ curl \ procps \ zstd \ && rm -rf /var/lib/apt/lists/* # ติดตั้ง Ollama เพื่อรันโมเดล LLM/VLM ในคอนเทนเนอร์ RUN curl -fsSL https://ollama.com/install.sh | sh # ติดตั้ง dependencies ผ่าน pip โดยตรง (เลี่ยงปัญหาระบบไฟล์ของ uv ใน Docker) RUN pip install --no-cache-dir \ "fastapi>=0.137.1" \ "numpy>=2.4.6" \ "pillow>=12.2.0" \ "python-multipart>=0.0.32" \ "torch<2.12.0" \ "torchvision<0.27.0" \ "transformers<5.0.0" \ "uvicorn>=0.49.0" \ "qwen-vl-utils" \ "accelerate" \ "einops>=0.8.2" \ "shapely>=2.1.2" \ "matplotlib>=3.11.0" \ "timm>=1.0.27" \ "ollama" # สร้างผู้ใช้สำหรับ Hugging Face Spaces (UID 1000) RUN groupadd -g 1000 user && \ useradd -m -u 1000 -g user user # สลับไปใช้ผู้ใช้ user USER user # กำหนด PATH และ Environment variables สำหรับใช้งาน ENV HOME=/home/user \ PATH=/home/user/.local/bin:$PATH # ตั้งค่า working directory ใน home directory ของ user WORKDIR /home/user/app # Copy โค้ดทั้งหมด (และกำหนดสิทธิ์เป็นของ UID/GID 1000) COPY --chown=1000:1000 . . # ให้สิทธิ์ในการรันสคริปต์เข้าทำงาน (entrypoint.sh) RUN chmod +x entrypoint.sh # สร้างโฟลเดอร์สำหรับเก็บข้อมูล RUN mkdir -p uploads static panels # Expose port 7860 สำหรับ Hugging Face Spaces EXPOSE 7860 # รันแอปพลิเคชันผ่านสคริปต์ entrypoint CMD ["./entrypoint.sh"]