| # Use an official Python runtime as a parent image | |
| FROM python:3.9 | |
| # Set the working directory in the container | |
| WORKDIR /app | |
| # Create a group and user for running the application | |
| RUN groupadd mygroup && useradd -ms /bin/bash -G mygroup appuser | |
| # Copy the current directory contents into the container at /app | |
| # Use --chown to set the ownership and --chmod to set the permissions | |
| COPY --chown=appuser:mygroup . /app | |
| # Install any needed packages specified in requirements.txt | |
| RUN pip install --no-cache-dir -r requirements.txt | |
| # Make port 7860 available to the world outside this container | |
| EXPOSE 7860 | |
| # Define environment variable for Gradio server port | |
| ENV GRADIO_SERVER_PORT=7860 | |
| # Set the HF_HOME environment variable to a writable directory | |
| ENV HF_HOME=/app/.cache/huggingface | |
| # Create the cache directory if it doesn't exist and set its ownership | |
| RUN mkdir -p $HF_HOME && chown -R appuser:mygroup $HF_HOME | |
| # Switch to the appuser to run the application | |
| USER appuser | |
| # Run app.py when the container launches | |
| CMD ["python", "app.py"] | |