| |
| |
| |
| FROM python:3.12-slim |
|
|
| ENV PYTHONUNBUFFERED=1 \ |
| PYTHONDONTWRITEBYTECODE=1 \ |
| PIP_NO_CACHE_DIR=1 \ |
| HOME=/root \ |
| AI_PROVIDER=nanobanana_fal \ |
| FAL_NANOBANANA_MODEL=fal-ai/nano-banana-pro/edit \ |
| FAL_KLING_MODEL=fal-ai/bytedance/seedance/v1/pro/fast/image-to-video \ |
| CELERY_TASK_ALWAYS_EAGER=true \ |
| CELERY_TASK_EAGER_PROPAGATES=true \ |
| CELERY_BROKER_URL=memory:// \ |
| CELERY_RESULT_BACKEND=cache+memory:// \ |
| DATABASE_URL=sqlite:////tmp/leechard.db \ |
| SQLALCHEMY_DATABASE_URI=sqlite:////tmp/leechard.db \ |
| STORAGE_BACKEND=local \ |
| LOCAL_STORAGE_DIR=/tmp/leechard-storage |
| |
|
|
| WORKDIR /app |
|
|
| |
| RUN apt-get update && apt-get install -y --no-install-recommends \ |
| build-essential gcc g++ cmake \ |
| libpq-dev libjpeg-dev zlib1g-dev libglib2.0-0 libgomp1 libgl1 \ |
| && rm -rf /var/lib/apt/lists/* |
|
|
| COPY requirements.txt . |
| RUN pip install --upgrade pip && pip install -r requirements.txt |
|
|
| COPY . . |
|
|
| |
| |
| |
| RUN python -c "from insightface.app import FaceAnalysis; a=FaceAnalysis(name='buffalo_l'); a.prepare(ctx_id=-1, det_size=(640,640))" || true |
|
|
| EXPOSE 7860 |
| HEALTHCHECK --interval=30s --timeout=5s --start-period=90s --retries=3 \ |
| CMD python -c "import urllib.request,sys; sys.exit(0 if urllib.request.urlopen('http://127.0.0.1:7860/health', timeout=4).status==200 else 1)" || exit 1 |
| CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "7860"] |
|
|