FROM python:3.11-slim # System dependencies RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential \ libgl1 \ libglib2.0-0 \ && rm -rf /var/lib/apt/lists/* WORKDIR /app COPY requirements.txt /app/requirements.txt RUN pip install --no-cache-dir --upgrade pip # CPU-only torch RUN pip install --no-cache-dir torch==2.3.1 --index-url https://download.pytorch.org/whl/cpu RUN pip install --no-cache-dir -r /app/requirements.txt # Create writable cache directories BEFORE switching user RUN mkdir -p /app/.cache/huggingface/hub /app/models && \ chown -R 1000:1000 /app # Non-root user RUN useradd -m -u 1000 appuser || true # Pre-download model ARG IMAGE_MODEL=stabilityai/sd-turbo ENV IMAGE_MODEL=${IMAGE_MODEL} ENV HF_HOME=/app/.cache/huggingface ENV TRANSFORMERS_CACHE=/app/.cache/huggingface ENV HF_HUB_ENABLE_HF_TRANSFER=0 RUN python -m huggingface_hub.commands.huggingface_cli download ${IMAGE_MODEL} --local-dir /app/models/sd-turbo COPY server.py /app/server.py RUN chown 1000:1000 /app/server.py ENV MODEL_LOCAL_DIR=/app/models/sd-turbo ENV DEFAULT_STEPS=4 ENV DEFAULT_GUIDANCE=1.0 ENV PYTHONUNBUFFERED=1 USER 1000 EXPOSE 7860 CMD ["python", "server.py"]