| FROM node:18 | |
| # Cài đặt system dependencies | |
| RUN apt-get update && apt-get install -y \ | |
| python3 \ | |
| make \ | |
| g++ \ | |
| cmake \ | |
| wget \ | |
| build-essential \ | |
| && rm -rf /var/lib/apt/lists/* | |
| WORKDIR /app | |
| # Copy package files | |
| COPY package*.json ./ | |
| # Cài đặt npm dependencies | |
| # --unsafe-perm để đảm bảo script postinstall (như node-llama-cpp download) chạy được dưới quyền root | |
| RUN npm install --unsafe-perm | |
| # Copy code | |
| COPY . . | |
| # Tạo thư mục models | |
| RUN mkdir -p models | |
| # Tải model thủ công bằng wget thay vì npx (ổn định hơn trong docker) | |
| # URL trực tiếp từ Hugging Face | |
| RUN wget -O models/Qwen3-1.7B-Q8_0.gguf https://huggingface.co/Qwen/Qwen3-1.7B-GGUF/resolve/main/Qwen3-1.7B-Q8_0.gguf?download=true | |
| # Force rebuild node-llama-cpp | |
| RUN npm rebuild node-llama-cpp | |
| EXPOSE 7860 | |
| CMD ["node", "server.js"] | |