FROM python:3.11-slim WORKDIR /app RUN apt-get update && apt-get install -y curl git git-lfs && rm -rf /var/lib/apt/lists/* COPY requirements.txt . RUN pip install --no-cache-dir --upgrade pip && \ pip install --no-cache-dir -r requirements.txt ENV STREAMLIT_BROWSER_GATHER_USAGE_STATS=false ENV PYTHONPATH=/app/app # Download assets DURING BUILD (cached layer) ENV HF_MODELS_REPO=NenJa/astra-models ENV HF_CHROMADB_REPO=NenJa/astra-chromadb # Copy download script COPY app/scripts/__init__.py app/scripts/ COPY app/scripts/download_assets.py app/scripts/ COPY app/src/settings.py app/src/ # Download assets during build with retries RUN python3 -m app.scripts.download_assets || \ (sleep 10 && python3 -m app.scripts.download_assets) || \ (sleep 30 && python3 -m app.scripts.download_assets) # NOW copy the rest of the app COPY . . ENV PORT=7860 EXPOSE 7860 HEALTHCHECK CMD sh -c "curl --fail http://localhost:${PORT:-7860}/_stcore/health || exit 1" # Just start Streamlit - assets already present ENTRYPOINT ["sh", "-c", "streamlit run app/main.py --server.port=${PORT:-7860} --server.address=0.0.0.0"]