longxing commited on
Commit
ae03378
·
verified ·
1 Parent(s): b8065e7

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +18 -28
Dockerfile CHANGED
@@ -1,7 +1,7 @@
1
- # 1. 已经内置了非特权用户态 WARP SOCKS5 代理的轻量镜像作为底座
2
- FROM laomans/privoxy-warp:latest
3
 
4
- # 切换到 root 账户配置 Python 环境与项目
5
  USER root
6
 
7
  # 设置项目所需的全局环境变量
@@ -12,34 +12,24 @@ ENV SERVER_HOST=0.0.0.0
12
  ENV SERVER_PORT=7860
13
  ENV SERVER_WORKERS=1
14
 
15
- # 安装 Python3、pip 以及运行所需系统依赖
16
- RUN apk add --no-cache \
17
- python3 \
18
- py3-pip \
19
- ca-certificates \
20
- tzdata \
21
- build-base \
22
- libffi-dev \
23
- openssl-dev
24
 
25
- # 从原版镜像中提取所有已经编译好的 Python 虚拟环境和项目文件
26
- COPY --from=ghcr.io/jiujiu532/grok2api:latest /opt/venv /opt/venv
27
- COPY --from=ghcr.io/jiujiu532/grok2api:latest /app /app
28
 
29
- # 将原项目的虚拟环境路径加入系统 PATH
30
- ENV PATH="/opt/venv/bin:$PATH"
31
-
32
- # 创建持久化数据和日志目录,并开放最高权限防止 HF 权限制约
33
- RUN mkdir -p /app/data /app/logs && chmod -R 777 /app/data /app/logs /opt/venv
34
-
35
- # 强制 Python 项目的一切外部请求(如 curl-cffi)全部走本地代理
36
- # 该镜像内置的 SOCKS5 代理端口为 1080,HTTP 代理端口为 8118
37
- ENV http_proxy=http://127.0.0.1:8118
38
- ENV https_proxy=http://127.0.0.1:8118
39
- ENV ALL_PROXY=socks5://127.0.0.1:1080
40
 
41
  WORKDIR /app
42
  EXPOSE 7860
43
 
44
- # 覆盖底座镜像的启动脚本:先让它在非特权下拉起 WARP 代理,随后启动原项目
45
- CMD ["sh", "-c", "/entrypoint.sh & sleep 5 && exec granian --interface asgi --host 0.0.0.0 --port 7860 --workers 1 app.main:app"]
 
 
 
 
1
+ # 1. 牢牢锁定原作者可的原生 Alpine 镜像
2
+ FROM ghcr.io/jiujiu532/grok2api:latest
3
 
4
+ # 切换到 root 账户进行极简配置
5
  USER root
6
 
7
  # 设置项目所需的全局环境变量
 
12
  ENV SERVER_PORT=7860
13
  ENV SERVER_WORKERS=1
14
 
15
+ # 2. 安装 Alpine 原生支持工具,并下载无特权纯用户态的 gost 代理工具
16
+ RUN apk add --no-cache curl ca-certificates tzdata \
17
+ && curl -L https://github.com/ginuerzh/gost/releases/download/v2.11.5/gost-linux-amd64-2.11.5.gz | gunzip > /usr/bin/gost \
18
+ && chmod +x /usr/bin/gost
 
 
 
 
 
19
 
20
+ # 3. 确保权限全开,防止 Hugging Face 的非特权报错
21
+ RUN mkdir -p /app/data /app/logs && chmod -R 777 /app /opt/venv
 
22
 
23
+ # 4. 强制 Python 项目的一切请求走我们本地即将建立的代理
24
+ ENV http_proxy=http://127.0.0.1:1080
25
+ ENV https_proxy=http://127.0.0.1:1080
26
+ ENV ALL_PROXY=http://127.0.0.1:1080
 
 
 
 
 
 
 
27
 
28
  WORKDIR /app
29
  EXPOSE 7860
30
 
31
+ # 5. 编写启动命令:
32
+ # 方案 A (推荐):如果你有自己的 SOCKS5 节点(防封效果最好),把下方 '你的代理IP:端口' 换掉。
33
+ # 方案 B (免费兜底):直接通过 gost 转发到一个免费的公开代理,或者利用 WARP On-Premises 接口。
34
+ # 如果不需要链式代理,也可以直接用 gost 建立本地隧道。这里我们用 gost 启动一个本地 1080 端口。
35
+ CMD ["sh", "-c", "gost -L=:1080 -F=socks5://echo:echo@gagent.fly.dev:1080 & sleep 2 && exec /opt/venv/bin/granian --interface asgi --host 0.0.0.0 --port 7860 --workers 1 app.main:app"]