FROM python:3.10-slim # System dependencies RUN apt-get update && apt-get install -y git wget && rm -rf /var/lib/apt/lists/* WORKDIR /workspace # Install Python dependencies COPY requirements.txt . RUN pip install --upgrade pip && pip install --no-cache-dir -r requirements.txt # Set Hugging Face cache for all model downloads (best practice for Spaces) # ENV HF_HOME="/workspace/.cache/huggingface" # RUN mkdir -p /workspace/.cache/huggingface # ENV CACHE_DIR="/workspace/.cache" # ENV HF_HOME="/workspace/.cache/huggingface" # ENV TRANSFORMERS_CACHE="/workspace/.cache/huggingface" # RUN mkdir -p /workspace/.cache/huggingface/hub && \ # chmod -R 777 /workspace/.cache ENV CACHE_DIR="/data" ENV HF_HOME="/data/huggingface" ENV TRANSFORMERS_CACHE="/data/huggingface" RUN mkdir -p /data/huggingface/models RUN mkdir -p /data/huggingface/hub/models--h94--IP-Adapter RUN mkdir -p /data/huggingface/.locks && chmod -R 777 /data # Pre-download Stable Diffusion v1-5 weights into cache RUN python -c "import torch; from diffusers import StableDiffusionImg2ImgPipeline; StableDiffusionImg2ImgPipeline.from_pretrained('runwayml/stable-diffusion-v1-5', cache_dir='/workspace/.cache/huggingface', torch_dtype=torch.float32)" # Pre-download IP-Adapter weights (if using) # RUN mkdir -p /workspace/.cache/huggingface/ip_adapter && \ # wget -O /workspace/.cache/huggingface/ip_adapter/ip-adapter_sd15.bin https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter_sd15.bin # Copy app code COPY . . # Disable Gradio analytics (optional, but good for Spaces) ENV GRADIO_ANALYTICS_ENABLED="False" CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"] # EXPOSE 7860 # CMD ["python", "app.py"] # FROM python:3.10-slim # # System dependencies # RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/* # WORKDIR /workspace # # Install Python dependencies # COPY requirements.txt . # RUN pip install --upgrade pip && pip install --no-cache-dir -r requirements.txt # # Download models and adapters at build time # # You can replace MODEL_ID or adapter repos as needed # ENV CACHE_DIR="/data" # ENV HF_HOME="/data" # # ENV TRANSFORMERS_CACHE="/data" # # ENV DEEPFACE_HOME="/data" # # ENV INSIGHTFACE_HOME="/data/.insightface" # RUN mkdir -p /data && \ # chmod -R 777 /data # # -- Download Stable Diffusion v1-5 weights -- # # RUN python -c "from diffusers import StableDiffusionImg2ImgPipeline; StableDiffusionImg2ImgPipeline.from_pretrained('runwayml/stable-diffusion-v1-5', cache_dir='./models', torch_dtype='float32')" # RUN python -c "import torch; from diffusers import StableDiffusionImg2ImgPipeline; StableDiffusionImg2ImgPipeline.from_pretrained('runwayml/stable-diffusion-v1-5', cache_dir='./models', torch_dtype=torch.float32)" # RUN apt-get update && apt-get install -y wget # # -- Download IP-Adapter weights (official Hugging Face repo) -- # RUN mkdir -p ./models/ip_adapter && \ # wget -O ./models/ip_adapter/ip-adapter_sd15.bin https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter_sd15.bin # # Set Hugging Face cache for all model downloads (best practice for Spaces) # ENV TRANSFORMERS_CACHE="/workspace/.cache/huggingface" # RUN mkdir -p /workspace/.cache/huggingface && \ # chmod -R 777 /workspace # # Pre-download Stable Diffusion v1-5 weights into cache # RUN python -c "import torch; from diffusers import StableDiffusionImg2ImgPipeline; StableDiffusionImg2ImgPipeline.from_pretrained('runwayml/stable-diffusion-v1-5', cache_dir='/workspace/.cache/huggingface', torch_dtype=torch.float32)" # # Pre-download IP-Adapter weights (if using) # RUN mkdir -p /workspace/.cache/huggingface/ip_adapter && \ # wget -O /workspace/.cache/huggingface/ip_adapter/ip-adapter_sd15.bin https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter_sd15.bin # # Copy app code # COPY . . # # Set environment (disable gradio analytics, useful for Spaces) # ENV GRADIO_ANALYTICS_ENABLED="False" # EXPOSE 7860 # CMD ["python", "app.py"]