| # 阶段 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"] |