| # Step 1: Use an official Python runtime as a parent image | |
| FROM python:3.11-slim | |
| # Step 2: Set the working directory inside the container | |
| WORKDIR /app | |
| # Step 3: Copy requirements and install them | |
| COPY requirements.txt . | |
| RUN pip install --no-cache-dir -r requirements.txt | |
| # Step 4: Copy the rest of your application's code | |
| COPY . . | |
| # Set a writable cache directory for Hugging Face models | |
| ENV HUGGING_FACE_HUB_CACHE="/app/cache" | |
| ENV SENTENCE_TRANSFORMERS_HOME="/app/cache" | |
| # --- THIS IS THE NEW, CRUCIAL LINE --- | |
| # Pre-download the model during the build process (as root) | |
| RUN python -c "from sentence_transformers import SentenceTransformer; SentenceTransformer('all-MiniLM-L6-v2')" | |
| # Step 5: Expose the port Gradio will run on | |
| EXPOSE 7860 | |
| ENV PYTHONUNBUFFERED 1 | |
| # Step 6: Define the command to run your app | |
| # This command directly starts the Gradio app in a way that works inside Docker. | |
| CMD ["python", "app.py"] |