OwenPowell commited on
Commit
265d16d
·
verified ·
1 Parent(s): 333d13e

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +26 -49
Dockerfile CHANGED
@@ -1,52 +1,29 @@
1
- FROM python:3.13-slim
2
-
3
- ENV PYTHONDONTWRITEBYTECODE=1 \
4
- PYTHONUNBUFFERED=1 \
5
- TZ=Asia/Shanghai \
6
- VIRTUAL_ENV=/opt/venv
7
-
8
- ENV PATH="$VIRTUAL_ENV/bin:$PATH"
9
-
10
- RUN apt-get update \
11
- && apt-get install -y --no-install-recommends tzdata ca-certificates \
12
- && rm -rf /var/lib/apt/lists/*
13
-
14
- WORKDIR /app
15
-
16
- RUN python -m venv "$VIRTUAL_ENV" \
17
- && pip install --no-cache-dir uv
18
-
19
- COPY pyproject.toml uv.lock /app/
20
-
21
- RUN uv sync --frozen --no-dev --no-install-project --active
22
-
23
- # Playwright Chromium for auto-register / turnstile solver
24
- RUN python -m playwright install --with-deps chromium
25
-
26
- COPY config.defaults.toml /app/config.defaults.toml
27
- COPY app /app/app
28
- COPY main.py /app/main.py
29
- COPY scripts /app/scripts
30
-
31
- RUN sed -i 's/\r$//' /app/scripts/*.sh || true \
32
- && chmod +x /app/scripts/*.sh || true
33
-
34
- RUN mkdir -p /app/data /app/data/tmp /app/logs \
35
- && chmod -R 777 /app/data /app/logs /app/scripts
36
-
37
- # Patch: asyncpg + pgbouncer 兼容 (禁用 prepared statements)
38
- RUN python -c "p='/app/app/core/storage.py';t=open(p).read();open(p,'w').write(t.replace('pool_pre_ping=True','pool_pre_ping=True,connect_args={\"statement_cache_size\":0}'))"
39
-
40
- # 启动脚本:注入 HF Secrets
41
- RUN echo '#!/bin/sh' > /app/hf-start.sh && \
42
- echo 'set -e' >> /app/hf-start.sh && \
43
- echo '/app/scripts/init_storage.sh' >> /app/hf-start.sh && \
44
- echo 'python /app/scripts/wait_for_storage.py' >> /app/hf-start.sh && \
45
- echo 'export SERVER_STORAGE_TYPE="${SERVER_STORAGE_TYPE:-local}"' >> /app/hf-start.sh && \
46
- echo 'export SERVER_STORAGE_URL="${SERVER_STORAGE_URL:-}"' >> /app/hf-start.sh && \
47
- echo 'exec uvicorn main:app --host 0.0.0.0 --port 8000' >> /app/hf-start.sh && \
48
- chmod +x /app/hf-start.sh
49
 
50
  EXPOSE 8000
51
 
52
- CMD ["/app/hf-start.sh"]
 
 
1
+ FROM ghcr.io/chenyme/grok2api:latest
2
+
3
+ ENV TZ=Asia/Shanghai \
4
+ LOG_LEVEL=INFO \
5
+ SERVER_PORT=8000 \
6
+ SERVER_WORKERS=1
7
+
8
+ RUN mkdir -p /app/data /app/logs && chmod -R 777 /app/data /app/logs /app/scripts
9
+
10
+ # 自定义启动脚本:将 HF Secrets 注入环境变量和 config.toml 后再启动
11
+ RUN echo '#!/bin/sh' > /app/start.sh && \
12
+ echo 'set -e' >> /app/start.sh && \
13
+ echo '/app/scripts/init_storage.sh' >> /app/start.sh && \
14
+ echo 'CONFIG="/app/data/config.toml"' >> /app/start.sh && \
15
+ echo 'if [ -n "$APP_KEY" ]; then' >> /app/start.sh && \
16
+ echo ' sed -i "s|^app_key = .*|app_key = \"$APP_KEY\"|" "$CONFIG"' >> /app/start.sh && \
17
+ echo 'fi' >> /app/start.sh && \
18
+ echo 'if [ -n "$API_KEY" ]; then' >> /app/start.sh && \
19
+ echo ' sed -i "s|^api_key = .*|api_key = \"$API_KEY\"|" "$CONFIG"' >> /app/start.sh && \
20
+ echo 'fi' >> /app/start.sh && \
21
+ echo 'export SERVER_STORAGE_TYPE="${SERVER_STORAGE_TYPE:-local}"' >> /app/start.sh && \
22
+ echo 'export SERVER_STORAGE_URL="${SERVER_STORAGE_URL:-}"' >> /app/start.sh && \
23
+ echo 'exec uvicorn main:app --host 0.0.0.0 --port 8000' >> /app/start.sh && \
24
+ chmod +x /app/start.sh
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
 
26
  EXPOSE 8000
27
 
28
+ ENTRYPOINT []
29
+ CMD ["/app/start.sh"]