|
|
FROM python:3.10-slim |
|
|
|
|
|
|
|
|
WORKDIR /app |
|
|
|
|
|
|
|
|
RUN apt-get update && apt-get install -y \ |
|
|
libgl1 \ |
|
|
libglib2.0-0 \ |
|
|
libsm6 \ |
|
|
libxext6 \ |
|
|
libxrender-dev \ |
|
|
libgomp1 \ |
|
|
git \ |
|
|
&& rm -rf /var/lib/apt/lists/* |
|
|
|
|
|
|
|
|
COPY requirements.txt . |
|
|
|
|
|
|
|
|
RUN pip install --no-cache-dir -r requirements.txt |
|
|
|
|
|
|
|
|
COPY . . |
|
|
|
|
|
|
|
|
|
|
|
RUN mkdir -p /data/uploads /data/results |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RUN echo '#!/bin/sh' > /entrypoint.sh && \ |
|
|
echo 'mkdir -p /tmp/colorize_uploads /tmp/colorize_results /tmp/hf_cache || true' >> /entrypoint.sh && \ |
|
|
echo 'if [ -n "$FIREBASE_CREDENTIALS" ]; then' >> /entrypoint.sh && \ |
|
|
echo ' printf "%s" "$FIREBASE_CREDENTIALS" > /tmp/firebase-adminsdk.json 2>/dev/null || true' >> /entrypoint.sh && \ |
|
|
echo 'fi' >> /entrypoint.sh && \ |
|
|
echo 'exec "$@"' >> /entrypoint.sh && \ |
|
|
chmod +x /entrypoint.sh |
|
|
|
|
|
|
|
|
EXPOSE 7860 |
|
|
|
|
|
|
|
|
ENV PYTHONUNBUFFERED=1 |
|
|
ENV BASE_URL=${SPACE_HOST} |
|
|
ENV PORT=7860 |
|
|
ENV DATA_DIR=/data |
|
|
ENV OMP_NUM_THREADS=1 |
|
|
ENV HF_HOME=/tmp/hf_cache |
|
|
ENV TRANSFORMERS_CACHE=/tmp/hf_cache |
|
|
ENV HUGGINGFACE_HUB_CACHE=/tmp/hf_cache |
|
|
ENV HF_HUB_CACHE=/tmp/hf_cache |
|
|
ENV XDG_CACHE_HOME=/tmp/hf_cache |
|
|
ENV MPLCONFIGDIR=/tmp/matplotlib_config |
|
|
|
|
|
|
|
|
HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \ |
|
|
CMD python -c "import requests; requests.get('http://localhost:7860/health', timeout=5)" || exit 1 |
|
|
|
|
|
|
|
|
ENTRYPOINT ["/entrypoint.sh"] |
|
|
|
|
|
|
|
|
|
|
|
CMD ["sh", "-c", "uvicorn app.main_sdxl:app --host 0.0.0.0 --port ${PORT:-7860}"] |