# سرویس چت‌بات — پایتون + مدل‌های بازیابی (CPU) FROM python:3.11-slim WORKDIR /srv # وابستگی‌های سیستمی برای numpy/scikit-learn RUN apt-get update && apt-get install -y --no-install-recommends \ g++ \ && rm -rf /var/lib/apt/lists/* COPY requirements.txt /srv/chatbot/requirements.txt RUN pip install --no-cache-dir -r /srv/chatbot/requirements.txt COPY . /srv/chatbot/ # مدل امبدینگ/ری‌رنکر در /data کش می‌شود (والیوم داکر) — بردارها در pgvector می‌روند و فایل ایندکس جدا وجود ندارد ENV HF_HOME=/data/hf \ HF_CACHE_DIR=/data/hf VOLUME /data # کاربر بدون دسترسی root — فقط /data باید نوشتنی باشد (کش مدل‌ها) RUN useradd --system --create-home appuser \ && chown -R appuser:appuser /srv/chatbot /data USER appuser EXPOSE 8000 HEALTHCHECK --interval=30s --timeout=5s --start-period=180s --retries=5 \ CMD python -c "import urllib.request; urllib.request.urlopen('http://localhost:8000/chat/healthz')" || exit 1 CMD ["uvicorn", "chatbot.app:api", "--host", "0.0.0.0", "--port", "8000", "--proxy-headers", "--forwarded-allow-ips=*"]