FROM python:3.12-slim WORKDIR /app RUN apt-get update && apt-get install -y --no-install-recommends \ git curl ffmpeg libgl1 libglib2.0-0 \ && rm -rf /var/lib/apt/lists/* RUN pip install --no-cache-dir \ --extra-index-url https://download.pytorch.org/whl/cpu \ "torch>=2.7" "torchvision" "torchaudio" RUN git clone --depth 1 https://github.com/comfyanonymous/ComfyUI.git /app/ComfyUI \ && pip install --no-cache-dir -r /app/ComfyUI/requirements.txt RUN git clone --depth 1 https://github.com/city96/ComfyUI-GGUF.git \ /app/ComfyUI/custom_nodes/ComfyUI-GGUF \ && pip install --no-cache-dir -r /app/ComfyUI/custom_nodes/ComfyUI-GGUF/requirements.txt RUN git clone --depth 1 https://github.com/Lightricks/ComfyUI-LTXVideo.git \ /app/ComfyUI/custom_nodes/ComfyUI-LTXVideo \ && (cd /app/ComfyUI/custom_nodes/ComfyUI-LTXVideo && pip install --no-cache-dir -r requirements.txt 2>/dev/null || true) RUN git clone --depth 1 https://github.com/kijai/ComfyUI-KJNodes.git \ /app/ComfyUI/custom_nodes/ComfyUI-KJNodes \ && (cd /app/ComfyUI/custom_nodes/ComfyUI-KJNodes && pip install --no-cache-dir -r requirements.txt 2>/dev/null || true) RUN pip install --no-cache-dir "gradio>=6,<7" huggingface_hub psutil websocket-client opencv-python-headless RUN mkdir -p /app/ComfyUI/models/diffusion_models \ /app/ComfyUI/models/text_encoders \ /app/ComfyUI/models/vae \ /app/ComfyUI/models/loras \ /app/ComfyUI/output \ /app/assets/videos RUN hf download vantagewithai/LTX2.3-10Eros-GGUF 10Eros_v1-Q3_K_M.gguf --local-dir /tmp/hf_dl \ && hf download TenStrip/LTX2.3_Distilled_Lora_1.1_Experiments ltx-2.3-22b-distilled-lora-1.1_fro90_ceil72_condsafe.safetensors --local-dir /tmp/hf_dl \ && hf download mradermacher/gemma-3-12b-it-qat-abliterated-GGUF gemma-3-12b-it-qat-abliterated.Q3_K_M.gguf --local-dir /tmp/hf_dl \ && hf download Kijai/LTX2.3_comfy text_encoders/ltx-2.3_text_projection_bf16.safetensors vae/taeltx2_3.safetensors vae/LTX23_video_vae_bf16.safetensors vae/LTX23_audio_vae_bf16.safetensors --local-dir /tmp/hf_dl \ && ln -s /tmp/hf_dl/10Eros_v1-Q3_K_M.gguf /app/ComfyUI/models/diffusion_models/10Eros_v1-Q3_K_M.gguf \ && ln -s /tmp/hf_dl/ltx-2.3-22b-distilled-lora-1.1_fro90_ceil72_condsafe.safetensors /app/ComfyUI/models/loras/ltx-2.3-22b-distilled-lora-1.1_fro90_ceil72_condsafe.safetensors \ && ln -s /tmp/hf_dl/gemma-3-12b-it-qat-abliterated.Q3_K_M.gguf /app/ComfyUI/models/text_encoders/gemma-3-12b-it-qat-abliterated.Q3_K_M.gguf \ && ln -s /tmp/hf_dl/text_encoders/ltx-2.3_text_projection_bf16.safetensors /app/ComfyUI/models/text_encoders/ltx-2.3_text_projection_bf16.safetensors \ && ln -s /tmp/hf_dl/vae/taeltx2_3.safetensors /app/ComfyUI/models/vae/taeltx2_3.safetensors \ && ln -s /tmp/hf_dl/vae/LTX23_video_vae_bf16.safetensors /app/ComfyUI/models/vae/LTX23_video_vae_bf16.safetensors \ && ln -s /tmp/hf_dl/vae/LTX23_audio_vae_bf16.safetensors /app/ComfyUI/models/vae/LTX23_audio_vae_bf16.safetensors COPY app.py /app/app.py COPY README.md /app/README.md EXPOSE 7860 CMD ["python", "-u", "/app/app.py"]