# Sử dụng Node.js image làm căn bản FROM node:18-bookworm-slim # Bước 1: Chạy dưới quyền root để cài đặt các package hệ thống USER root RUN apt-get update && apt-get install -y --no-install-recommends \ gcc \ g++ \ openjdk-17-jdk-headless \ python3 \ python3-pip \ python3-is-python3 \ libgl1 \ libglib2.0-0 \ && rm -rf /var/lib/apt/lists/* # Bước 2: Cài đặt các thư viện Python (Chạy dưới quyền root) RUN pip3 install --no-cache-dir --break-system-packages \ numpy \ matplotlib \ sympy \ opencv-python-headless # Bước 3: Thiết lập biến môi trường # Hugging Face Spaces bắt buộc dùng UID 1000. Image node:18 đã có sẵn user 'node' với UID 1000. ENV HOME=/home/node \ PATH=/home/node/.local/bin:$PATH \ PORT=7860 # Bước 4: Cấu hình thư mục làm việc WORKDIR $HOME/app # Bước 5: Copy file cấu hình Node.js COPY --chown=node:node package*.json ./ # Bước 6: Chuyển sang quyền user node trước khi cài đặt npm và chạy app USER node # Cài đặt dependencies Node.js RUN npm install # Bước 7: Copy toàn bộ mã nguồn COPY --chown=node:node . . # Bước 8: Chuẩn bị thư mục temp cho việc thực thi code RUN mkdir -p temp && chmod 777 temp # Cấu hình cổng mạng EXPOSE 7860 # Lệnh khởi chạy CMD ["node", "server.js"]