# 阶段 1: 构建 FROM golang:1.21-alpine AS builder WORKDIR /app # 复制go.mod和go.sum文件 COPY go.mod ./ # (此步骤在下一步的 go mod tidy 中已包含,为保持清晰而保留) # 先下载依赖,可以利用Docker的层缓存 RUN go mod download # 复制源代码 COPY main.go ./ # tidy会确保go.sum文件是最新的,并移除不用的依赖 RUN go mod tidy # 构建应用 RUN CGO_ENABLED=0 GOOS=linux go build -o /go-api # 阶段 2: 运行 FROM alpine:latest # 从构建阶段复制编译好的二进制文件 COPY --from=builder /go-api /go-api # 暴露应用程序运行的端口 EXPOSE 7860 # 容器启动时运行的命令 CMD ["/go-api"]