File size: 1,860 Bytes
0df4e43
d1d8753
0df4e43
 
 
d1d8753
 
0df4e43
 
 
d1d8753
 
 
 
 
 
0df4e43
d1d8753
0df4e43
 
 
 
 
 
 
 
 
 
 
 
 
d1d8753
0df4e43
 
d1d8753
0df4e43
 
 
 
 
 
 
 
 
 
 
d1d8753
0df4e43
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# ==========================================
# 第一阶段:利用云原生挂载拉取私有源码并编译
# ==========================================
FROM golang:1.26-alpine AS builder

# 安装 git 和 openssh 以便拉取私有仓库
RUN apk add --no-cache git openssh-client

WORKDIR /build

# 🎯【核心破局】:使用 Hugging Face 官方标准的 Secret 挂载读取机制
# 这行命令会临时把你在 HF 后台填写的 Secret 安全地挂载到容器内的 /run/secrets/GH_TOKEN 文件中
RUN --mount=type=secret,id=GH_TOKEN \
    GH_TOKEN_VAL=$(cat /run/secrets/GH_TOKEN) && \
    if [ -z "$GH_TOKEN_VAL" ]; then echo "❌ 错误:Hugging Face 的 GH_TOKEN 读取失败,请检查 Settings 里的 Secret 命名是否完全一致!" && exit 1; fi && \
    git clone https://${GH_TOKEN_VAL}@github.com/jjf1126/Agent-Platform-Studio.git .

# 现场执行依赖拉取与物理编译
RUN go mod download && \
    CGO_ENABLED=0 go build -buildvcs=false -trimpath -ldflags="-s -w" -o vproxy ./cmd/vproxy \
    && go clean -cache -modcache -testcache

# ==========================================
# 第二阶段:构建最终常驻运行的纯净镜像
# ==========================================
FROM alpine:3.20

RUN apk add --no-cache ca-certificates tzdata bash

WORKDIR /app

# 1. 复制编译好的主程序
COPY --from=builder /build/vproxy /app/vproxy

# 2. 将拉取下来的私有配置文件夹物理复制到运行目录
COPY --from=builder /build/config/ /app/config/

# 3. 锁定环境变量路径
ENV VPROXY_CONFIG=/app/config/config.json
ENV VPROXY_API_KEYS=/app/config/api_keys.txt
ENV VPROXY_MODELS=/app/config/models.json

# 4. 强制注入端口适配 Hugging Face 7860 核心网关限制
ENV PORT=7860
EXPOSE 7860

# 5. 彻底废除 entrypoint 脚本,直接以本地文件运行模式启动二进制
CMD ["./vproxy"]