| # 第一阶段:编译 Go 程序 | |
| FROM golang:1.21-alpine AS builder | |
| WORKDIR /app | |
| # 复制依赖文件并下载 | |
| COPY go.mod ./ | |
| # 如果有 go.sum 也要复制:COPY go.mod go.sum ./ | |
| RUN go mod download | |
| # 复制所有源代码 | |
| COPY . . | |
| # 编译程序(确保 main.go 在根目录) | |
| RUN go build -o main . | |
| # 第二阶段:运行镜像 | |
| FROM alpine:latest | |
| WORKDIR /root/ | |
| # 从编译阶段复制二进制文件和 .env | |
| COPY --from=builder /app/main . | |
| COPY --from=builder /app/.env . | |
| # 如果有其他静态资源文件夹(如 web),也要复制 | |
| COPY --from=builder /app/web ./web | |
| # Hugging Face Spaces 默认使用 7860 端口 | |
| EXPOSE 7860 | |
| # 必须让你的 Go 程序监听 7860 端口 | |
| CMD ["./main"] | |