# 编译阶段 FROM golang:1.24 AS builder ENV CGO_ENABLED=0 \ GOOS=linux \ GOARCH=amd64 \ GOPROXY=https://goproxy.cn|https://proxy.golang.google.cn|direct \ GOSUMDB=sum.golang.google.cn WORKDIR /src/ai-chat-backend # 先复制依赖描述文件,最大化利用缓存 COPY go.mod go.sum ./ RUN --mount=type=cache,target=/go/pkg/mod \ --mount=type=cache,target=/root/.cache/go-build \ go mod download -x # 再复制源码 COPY . . RUN --mount=type=cache,target=/go/pkg/mod \ --mount=type=cache,target=/root/.cache/go-build \ go build -trimpath -ldflags="-s -w" -o /out/ai-chat-backend ./cmd # 运行阶段 FROM alpine:3.18 AS runtime COPY ./curl-amd64 /usr/bin/curl RUN chmod +x /usr/bin/curl LABEL maintainer="nick" WORKDIR /app/ COPY ./dev.config.yaml /app/config.yaml COPY ./www /app/www COPY --from=builder /out/ai-chat-backend ./ai-chat-backend ENTRYPOINT ["./ai-chat-backend"] CMD ["--config=config.yaml"]