Grok2Api / Dockerfile
github-actions[bot]
Deploy from GitHub Actions 863023faed1504d258dc4bbe3153d7092146e495
6bf8b51
FROM python:3.13-slim
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 \
TZ=Asia/Shanghai \
VIRTUAL_ENV=/app/.venv \
PATH=/app/.venv/bin:/root/.local/bin:$PATH \
SERVER_HOST=0.0.0.0 \
SERVER_PORT=7860 \
SERVER_WORKERS=1 \
DATA_DIR=/data \
LOG_DIR=/data/logs
WORKDIR /app
EXPOSE 7860
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
build-essential \
curl \
ca-certificates \
git \
libffi-dev \
libssl-dev \
&& rm -rf /var/lib/apt/lists/*
COPY --from=ghcr.io/astral-sh/uv:0.6.17 /uv /uvx /bin/
RUN git clone --depth 1 https://github.com/chenyme/grok2api.git /tmp/src \
&& cp /tmp/src/pyproject.toml /app/pyproject.toml \
&& cp /tmp/src/uv.lock /app/uv.lock \
&& uv sync --frozen --no-dev --no-install-project \
&& cp -r /tmp/src/app /app/app \
&& cp /tmp/src/config.defaults.toml /app/config.defaults.toml \
&& rm -rf /tmp/src
COPY start.sh /app/start.sh
RUN chmod +x /app/start.sh \
&& mkdir -p /data /data/logs
ENTRYPOINT ["/app/start.sh"]
CMD ["granian", "--interface", "asgi", "--host", "0.0.0.0", "--port", "7860", "--workers", "1", "app.main:app"]