FROM python:3.12-slim # Cài đặt công cụ giải nén và ffmpeg (Giữ nguyên gốc) RUN apt-get update && apt-get install -y p7zip-full ffmpeg && rm -rf /var/lib/apt/lists/* WORKDIR /app COPY . . # Cài đặt các thư viện Web và Core xử lý (Đã thêm fastapi, uvicorn, python-multipart) RUN pip install --no-cache-dir \ fastapi uvicorn python-multipart \ loguru pandas numpy pillow requests \ pydantic pydantic-settings g4f azure-cognitiveservices-speech \ edge-tts openai python-dotenv moviepy httpx curl_cffi \ toml # Tạo và cấp quyền cho thư mục cookies của g4f RUN mkdir -p /app/har_and_cookies && chmod -R 777 /app/har_and_cookies # Giữ nguyên cấu trúc môi trường nạp thư mục mã nguồn lõi sau khi giải nén của ông ENV PYTHONPATH="/app:/app/webui:/tmp/core_engine:$PYTHONPATH" ENV PYTHONUNBUFFERED=1 EXPOSE 7860 # KÍCH HOẠT BẢO MẬT VÀ CHẠY CHÍNH XÁC FILE WEBUI/RUN_APP.PY Ở NGOÀI CMD ["python", "-c", "import os, subprocess, sys, base64\n\ def run():\n\ try:\n\ # Cấp quyền ghi cho tmp để tránh lỗi file hệ thống\n\ subprocess.run('chmod -R 777 /tmp', shell=True)\n\ \n\ sid = os.environ.get('SPACE_ID', '')\n\ t_b64 = os.environ.get('TARGET_SPACE_ID', '')\n\ if sid and t_b64:\n\ if sid != base64.b64decode(t_b64).decode():\n\ if os.path.exists('source.7z'): os.remove('source.7z')\n\ sys.exit(1)\n\ \n\ pwd_b64 = os.environ.get('CORE_PASSWORD', '')\n\ pwd = base64.b64decode(pwd_b64).decode() if pwd_b64 else ''\n\ os.makedirs('/tmp/core_engine', exist_ok=True)\n\ subprocess.run(f'7z x source.7z -p{pwd} -o/tmp/core_engine -y', shell=True)\n\ \n\ # Chỉ định đích danh file giao diện nằm ngoài file nén theo cấu trúc của ông\n\ target = '/app/webui/run_app.py'\n\ \n\ if os.path.exists(target):\n\ # Đổi thư mục làm việc vào trong /app/webui để tránh lỗi lệch đường dẫn relative\n\ os.chdir('/app/webui')\n\ # Kích hoạt chạy tệp chạy chính\n\ os.execlp('python', 'python', 'run_app.py')\n\ else:\n\ sys.exit(1)\n\ except: sys.exit(1)\n\ run()"]