Spaces:
Running
Running
| # Sử dụng Ubuntu 24.04 để có sẵn GLIBC 2.39 | |
| FROM ubuntu:24.04 | |
| # Tránh các câu hỏi tương tác khi cài đặt package | |
| ENV DEBIAN_FRONTEND=noninteractive | |
| # Kiểm tra nếu UID 1000 đã tồn tại thì đổi tên sang user, ngược lại thì tạo mới | |
| RUN if id -u 1000 >/dev/null 2>&1; then \ | |
| EXISTING_USER=$(id -un 1000); \ | |
| usermod -l user ${EXISTING_USER}; \ | |
| groupmod -n user ${EXISTING_USER} || true; \ | |
| mv /home/${EXISTING_USER} /home/user || true; \ | |
| usermod -d /home/user user; \ | |
| else \ | |
| useradd -m -u 1000 user; \ | |
| fi | |
| # CÀI ĐẶT THÊM GÓI SUDO, PYTHON, NODEJS VÀ NGINX | |
| RUN apt-get update && apt-get install -y \ | |
| python3 \ | |
| python3-pip \ | |
| python3-venv \ | |
| curl \ | |
| git \ | |
| ffmpeg \ | |
| libgomp1 \ | |
| sudo \ | |
| nginx \ | |
| lsof \ | |
| && curl -fsSL https://deb.nodesource.com/setup_22.x | bash - \ | |
| && apt-get install -y nodejs \ | |
| && rm -rf /var/lib/apt/lists/* | |
| # CẤU HÌNH CHO PHÉP USER CHẠY SUDO KHÔNG CẦN PASSWORD | |
| RUN echo "user ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers | |
| # Cập nhật liên kết alias trỏ thẳng vào python3 của hệ thống | |
| RUN ln -sf /usr/bin/python3 /usr/bin/python && \ | |
| ln -sf /usr/bin/pip3 /usr/bin/pip | |
| # Cài đặt các thư viện Python | |
| RUN pip install --no-cache-dir --break-system-packages \ | |
| jupyterlab \ | |
| langchain \ | |
| langchain-groq \ | |
| langchain-google-genai \ | |
| openai \ | |
| httpx \ | |
| pandas \ | |
| matplotlib \ | |
| requests | |
| # ==================== PHÂN QUYỀN HỆ THỐNG CHO NGINX (BẰNG ROOT) ==================== | |
| RUN mkdir -p /var/lib/nginx/body /var/lib/nginx/proxy /var/log/nginx /run/nginx && \ | |
| chown -R user:user /var/lib/nginx /var/log/nginx /run/nginx /var/lib/nginx/body | |
| RUN touch /run/nginx.pid && chown user:user /run/nginx.pid | |
| # =================================================================================== | |
| # Chuyển sang user 1000 (Bắt buộc theo quy định của Hugging Face) | |
| USER user | |
| WORKDIR /home/user | |
| # Copy cấu hình Nginx và JupyterLab vào container | |
| COPY --chown=user:user nginx.conf /home/user/nginx.conf | |
| # Copy file entrypoint.sh và cấp quyền chạy | |
| COPY --chown=user:user entrypoint.sh /home/entrypoint.sh | |
| RUN chmod +x /home/entrypoint.sh | |
| # Expose cổng mặc định của Space (Cổng này Nginx sẽ đứng đón) | |
| EXPOSE 7860 | |
| # Khởi chạy bằng entrypoint | |
| CMD ["/home/entrypoint.sh"] |