|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FROM python:3.11-slim as builder |
|
|
|
|
|
ARG WEBSCOUT_VERSION=latest |
|
ARG TARGETPLATFORM |
|
ARG BUILDPLATFORM |
|
|
|
|
|
ENV PYTHONUNBUFFERED=1 \ |
|
PYTHONDONTWRITEBYTECODE=1 \ |
|
PIP_NO_CACHE_DIR=1 \ |
|
PIP_DISABLE_PIP_VERSION_CHECK=1 \ |
|
PIP_DEFAULT_TIMEOUT=100 |
|
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \ |
|
build-essential \ |
|
gcc \ |
|
git \ |
|
curl \ |
|
&& rm -rf /var/lib/apt/lists/* |
|
|
|
|
|
RUN python -m venv /opt/venv |
|
ENV PATH="/opt/venv/bin:$PATH" |
|
|
|
|
|
RUN pip install --upgrade pip setuptools wheel |
|
|
|
|
|
|
|
RUN if [ "$WEBSCOUT_VERSION" = "latest" ]; then \ |
|
pip install git+https://github.com/OEvortex/Webscout.git |
|
else \ |
|
pip install git+https://github.com/OEvortex/Webscout.git@${WEBSCOUT_VERSION} |
|
fi |
|
|
|
|
|
RUN pip install \ |
|
gunicorn[gthread] \ |
|
uvicorn[standard] \ |
|
prometheus-client \ |
|
structlog \ |
|
motor \ |
|
pymongo |
|
|
|
|
|
|
|
|
|
FROM python:3.11-slim as runtime |
|
|
|
|
|
ARG BUILD_DATE |
|
ARG VCS_REF |
|
ARG VERSION |
|
|
|
LABEL maintainer="OEvortex" \ |
|
org.label-schema.build-date=$BUILD_DATE \ |
|
org.label-schema.name="webscout-api" \ |
|
org.label-schema.description="Webscout API Server - OpenAI-compatible LLM proxy" \ |
|
org.label-schema.url="https://github.com/OEvortex/Webscout" \ |
|
org.label-schema.vcs-ref=$VCS_REF \ |
|
org.label-schema.vcs-url="https://github.com/OEvortex/Webscout" \ |
|
org.label-schema.vendor="OEvortex" \ |
|
org.label-schema.version=$VERSION \ |
|
org.label-schema.schema-version="1.0" |
|
|
|
|
|
RUN groupadd --gid 1000 webscout && \ |
|
useradd --uid 1000 --gid webscout --shell /bin/bash --create-home webscout |
|
|
|
|
|
ENV PYTHONUNBUFFERED=1 \ |
|
PYTHONDONTWRITEBYTECODE=1 \ |
|
PYTHONPATH=/app \ |
|
PATH="/opt/venv/bin:$PATH" \ |
|
|
|
PYTHONHASHSEED=random \ |
|
|
|
MALLOC_ARENA_MAX=2 \ |
|
|
|
WEBSCOUT_HOST=0.0.0.0 \ |
|
WEBSCOUT_PORT=7860 \ |
|
WEBSCOUT_WORKERS=1 \ |
|
WEBSCOUT_LOG_LEVEL=info \ |
|
|
|
WEBSCOUT_NO_AUTH=true \ |
|
WEBSCOUT_NO_RATE_LIMIT=true \ |
|
WEBSCOUT_DATA_DIR=/app/data \ |
|
WEBSCOUT_API_TITLE="Webscout API" \ |
|
WEBSCOUT_API_DESCRIPTION="OpenAI API compatible interface for various LLM providers" |
|
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \ |
|
|
|
libffi8 \ |
|
libssl3 \ |
|
|
|
curl \ |
|
|
|
procps \ |
|
&& rm -rf /var/lib/apt/lists/* \ |
|
&& apt-get clean |
|
|
|
|
|
COPY --from=builder /opt/venv /opt/venv |
|
|
|
|
|
WORKDIR /app |
|
RUN chown -R webscout:webscout /app |
|
|
|
|
|
|
|
|
|
|
|
RUN mkdir -p /app/logs /app/data && \ |
|
chown -R webscout:webscout /app/logs /app/data |
|
|
|
|
|
USER webscout |
|
|
|
|
|
EXPOSE $WEBSCOUT_PORT |
|
|
|
|
|
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ |
|
CMD curl -f http://localhost:${WEBSCOUT_PORT:-8000}/health || exit 1 |
|
|
|
|
|
|
|
CMD ["python", "-m", "webscout.auth.server"] |
|
|