ParseVideo / Dockerfile
1een's picture
Update Dockerfile
36cf343 verified
# ---------------- 构建阶段 ----------------
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"]