# ---------------- 构建阶段 ---------------- FROM golang:1.24-alpine AS builder # 设置工作目录 WORKDIR /app # 安装 git 和 sed (用于拉取代码和修改端口) RUN apk add --no-cache git sed # 1. 直接拉取代码 (这里使用 CACHEBUST 技巧,见下文解释) # 只要更改这行 arg 的值,Docker 就会重新拉取最新代码,而不是用缓存 ARG CACHEBUST=1 RUN git clone https://github.com/wujunwei928/parse-video.git . # 2. 【关键】修改端口 8080 -> 7860 # Hugging Face 强制要求 7860,原项目是 8080 # 这一步必须要在 clone 之后做 RUN sed -i 's/8080/7860/g' main.go # 3. 下载依赖并编译 RUN go mod download RUN go build -o parse-video main.go # ---------------- 运行阶段 ---------------- FROM alpine:latest WORKDIR /app # 安装基础库 RUN apk add --no-cache ca-certificates tzdata # 设置用户 (Hugging Face 安全要求) RUN adduser -D -u 1000 user USER 1000 # 4. 从构建层复制编译好的程序 COPY --from=builder --chown=1000:1000 /app/parse-video . # 如果项目有配置文件或静态资源文件夹(如 conf, web, templates),需要在这里一并复制 # 这是一个保险操作,把整个目录结构里非代码文件尝试复制过来(视项目结构而定) # 这里只演示复制 binary,通常足够。如果报错缺文件,需添加 COPY 指令。 # 暴露端口 EXPOSE 7860 # 启动 CMD ["./parse-video"]