| FROM python:3.10.14-bookworm | |
| ARG USER_UID=10002 | |
| ARG USER_GID=$USER_UID | |
| ARG USERNAME=modelapi | |
| # Combined system setup in single layer | |
| RUN groupadd --gid $USER_GID $USERNAME \ | |
| && useradd --uid $USER_UID --gid $USER_GID -m $USERNAME \ | |
| && mkdir -p /modelapi /home/$USERNAME/.modelapi \ | |
| && chown -R $USER_UID:$USER_GID /modelapi /home/$USERNAME \ | |
| && chmod -R 755 /modelapi /home/$USERNAME | |
| # Environment variables | |
| ENV CUDA_HOME=/usr/local/cuda-12.6 | |
| ENV PATH="/modelapi/.venv/bin:$PATH" | |
| # Install uv (as root first) | |
| RUN pip install --no-cache-dir uv | |
| # Copy only necessary files (pyproject.toml first for better caching) | |
| COPY pyproject.toml /modelapi/ | |
| COPY app /modelapi/app | |
| COPY sgmse /modelapi/sgmse | |
| # Install dependencies with uv | |
| USER $USERNAME | |
| RUN python -m uv venv /modelapi/.venv \ | |
| && . /modelapi/.venv/bin/activate \ | |
| && uv pip install --no-cache-dir -e /modelapi | |
| EXPOSE 6500 | |
| CMD ["/bin/bash", "-c", "source /modelapi/.venv/bin/activate && python3 /modelapi/app/run.py"] |