mirror of
https://github.com/onyx-dot-app/onyx.git
synced 2026-10-22 03:14:06 -05:00
68 lines
2.5 KiB
Docker
68 lines
2.5 KiB
Docker
# Base stage with dependencies
|
|
FROM python:3.11.7-slim-bookworm AS base
|
|
|
|
ENV DANSWER_RUNNING_IN_DOCKER="true" \
|
|
HF_HOME=/app/.cache/huggingface
|
|
|
|
COPY --from=ghcr.io/astral-sh/uv:0.9.9 /uv /uvx /bin/
|
|
|
|
RUN mkdir -p /app/.cache/huggingface
|
|
|
|
COPY ./requirements/model_server.txt /tmp/requirements.txt
|
|
RUN uv pip install --system --no-cache-dir --upgrade \
|
|
-r /tmp/requirements.txt && \
|
|
rm -rf ~/.cache/uv /tmp/*.txt
|
|
|
|
# Stage for downloading embedding models
|
|
FROM base AS embedding-models
|
|
RUN python -c "from huggingface_hub import snapshot_download; \
|
|
snapshot_download('nomic-ai/nomic-embed-text-v1');"
|
|
|
|
# Initialize SentenceTransformer to cache the custom architecture
|
|
RUN python -c "from sentence_transformers import SentenceTransformer; \
|
|
SentenceTransformer(model_name_or_path='nomic-ai/nomic-embed-text-v1', trust_remote_code=True);"
|
|
|
|
# Final stage - combine all downloads
|
|
FROM base AS final
|
|
|
|
LABEL com.danswer.maintainer="founders@onyx.app"
|
|
LABEL com.danswer.description="This image is for the Onyx model server which runs all of the \
|
|
AI models for Onyx. This container and all the code is MIT Licensed and free for all to use. \
|
|
You can find it at https://hub.docker.com/r/onyx/onyx-model-server. For more details, \
|
|
visit https://github.com/onyx-dot-app/onyx."
|
|
|
|
# Create non-root user for security best practices
|
|
RUN groupadd -g 1001 onyx && \
|
|
useradd -u 1001 -g onyx -m -s /bin/bash onyx && \
|
|
mkdir -p /var/log/onyx && \
|
|
chmod 755 /var/log/onyx && \
|
|
chown onyx:onyx /var/log/onyx
|
|
|
|
# In case the user has volumes mounted to /app/.cache/huggingface that they've downloaded while
|
|
# running Onyx, move the current contents of the cache folder to a temporary location to ensure
|
|
# it's preserved in order to combine with the user's cache contents
|
|
COPY --chown=onyx:onyx --from=embedding-models /app/.cache/huggingface /app/.cache/temp_huggingface
|
|
|
|
WORKDIR /app
|
|
|
|
# Utils used by model server
|
|
COPY ./onyx/utils/logger.py /app/onyx/utils/logger.py
|
|
COPY ./onyx/utils/middleware.py /app/onyx/utils/middleware.py
|
|
|
|
# Place to fetch version information
|
|
COPY ./onyx/__init__.py /app/onyx/__init__.py
|
|
|
|
# Shared between Onyx Backend and Model Server
|
|
COPY ./shared_configs /app/shared_configs
|
|
|
|
# Model Server main code
|
|
COPY ./model_server /app/model_server
|
|
|
|
ENV PYTHONPATH=/app
|
|
|
|
# Default ONYX_VERSION, typically overriden during builds by GitHub Actions.
|
|
ARG ONYX_VERSION=0.0.0-dev
|
|
ENV ONYX_VERSION=${ONYX_VERSION}
|
|
|
|
CMD ["uvicorn", "model_server.main:app", "--host", "0.0.0.0", "--port", "9000"]
|