Spaces:
Running
Running
| FROM python:3.13-alpine AS builder | |
| ENV PYTHONDONTWRITEBYTECODE=1 \ | |
| PYTHONUNBUFFERED=1 \ | |
| TZ=Asia/Shanghai \ | |
| UV_PROJECT_ENVIRONMENT=/opt/venv | |
| ENV PATH="$UV_PROJECT_ENVIRONMENT/bin:$PATH" | |
| RUN apk add --no-cache \ | |
| git \ | |
| tzdata \ | |
| ca-certificates \ | |
| build-base \ | |
| linux-headers \ | |
| libffi-dev \ | |
| openssl-dev \ | |
| curl-dev \ | |
| cargo \ | |
| rust | |
| WORKDIR /src | |
| COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/ | |
| ARG GROK2API_REPO=https://github.com/chenyme/grok2api.git | |
| ARG GROK2API_REF=main | |
| RUN git clone --depth 1 --branch "$GROK2API_REF" "$GROK2API_REPO" /src/grok2api | |
| WORKDIR /src/grok2api | |
| RUN uv sync --frozen --no-dev --no-install-project \ | |
| && find /opt/venv -type d -name "__pycache__" -prune -exec rm -rf {} + \ | |
| && find /opt/venv -type f -name "*.pyc" -delete \ | |
| && find /opt/venv -type d -name "tests" -prune -exec rm -rf {} + \ | |
| && find /opt/venv -type d -name "test" -prune -exec rm -rf {} + \ | |
| && find /opt/venv -type d -name "testing" -prune -exec rm -rf {} + \ | |
| && find /opt/venv -type f -name "*.so" -exec strip --strip-unneeded {} + || true \ | |
| && rm -rf /root/.cache /tmp/uv-cache | |
| FROM python:3.13-alpine | |
| ENV PYTHONDONTWRITEBYTECODE=1 \ | |
| PYTHONUNBUFFERED=1 \ | |
| TZ=Asia/Shanghai \ | |
| VIRTUAL_ENV=/opt/venv \ | |
| DATA_DIR=/app/data \ | |
| SERVER_HOST=0.0.0.0 \ | |
| SERVER_PORT=7860 \ | |
| SERVER_WORKERS=1 \ | |
| LOG_LEVEL=INFO | |
| ENV PATH="$VIRTUAL_ENV/bin:$PATH" | |
| RUN apk add --no-cache \ | |
| tzdata \ | |
| ca-certificates \ | |
| git \ | |
| libffi \ | |
| openssl \ | |
| libgcc \ | |
| libstdc++ \ | |
| libcurl | |
| WORKDIR /app | |
| COPY --from=builder /opt/venv /opt/venv | |
| COPY --from=builder /src/grok2api/config.defaults.toml ./ | |
| COPY --from=builder /src/grok2api/app ./app | |
| COPY --from=builder /src/grok2api/_public ./_public | |
| COPY --from=builder /src/grok2api/main.py ./ | |
| COPY --from=builder /src/grok2api/scripts ./scripts | |
| RUN python3 -m ensurepip --upgrade \ | |
| && python3 -m pip install --no-cache-dir "huggingface_hub>=0.23.0" "watchdog>=4.0.0" \ | |
| && mkdir -p /app/data /app/logs \ | |
| && chmod +x /app/scripts/entrypoint.sh | |
| COPY start.sh /app/start.sh | |
| RUN sed -i 's/\r$//' /app/start.sh \ | |
| && chmod +x /app/start.sh | |
| EXPOSE 7860 | |
| ENTRYPOINT [] | |
| CMD ["/bin/sh", "/app/start.sh"] | |