# syntax=docker/dockerfile:1 # Comments are provided throughout this file to help you get started. # If you need more help, visit the Dockerfile reference guide at # https://docs.docker.com/go/dockerfile-reference/ # Want to help us make this template better? Share your feedback here: https://forms.gle/ybq9Krt8jtBL3iCk7 ARG PYTHON_VERSION=3.9.0 FROM python:${PYTHON_VERSION}-slim as base # Prevents Python from writing pyc files. # Keeps Python from buffering stdout and stderr to avoid situations where # the application crashes without emitting any logs due to buffering. ENV PYTHONUNBUFFERED=1 WORKDIR /app RUN useradd -m -s /bin/bash appuser && \ # Give necessary permissions chown -R appuser:appuser /app USER appuser ENV HOME=/home/appuser \ PATH=/home/appuser/.local/bin:$PATH ENV TRANSFORMERS_CACHE=$HOME/app/.cache/huggingface/hub COPY --chown=appuser ./requirements.txt requirements.txt RUN mkdir -p /app/.cache \ && chown -R appuser:appuser /app/.cache # Download dependencies as a separate step to take advantage of Docker's caching. # Leverage a cache mount to /root/.cache/pip to speed up subsequent builds. # Leverage a bind mount to requirements.txt to avoid having to copy them into # into this layer. RUN python -m pip install --upgrade pip \ && pip install -r requirements.txt # Copy the source code into the container. COPY --chown=appuser . . # Expose the port that the application listens on. EXPOSE 7860 # Run the application. CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860", "--reload"]