# 多阶段构建 - 第一阶段:编译(使用已安装的镜像) FROM golang:alpine AS builder RUN apk add --no-cache git ca-certificates tzdata ENV GO111MODULE=on ENV GOPROXY=https://goproxy.cn,direct ENV CGO_ENABLED=0 ENV GOTOOLCHAIN=auto ENV GOPRIVATE=gitea.com/red-future/common # 配置git使用私有Gitea仓库(带Token认证) RUN git config --global url."http://x-token-auth:619679cd366aefea3a50f0622d842a41f2209e08595767bba49c3836ef57d415@116.204.74.41:3000/red-future/common.git".insteadOf "https://gitea.com/red-future/common.git" && \ git config --global credential.helper store WORKDIR /build # 复制父目录的 common 模块(因为 go.mod 中使用了本地 replace) #COPY ../common /build/common COPY . . RUN go mod download && go mod tidy RUN go build -ldflags="-s -w" -o main ./main.go # 第二阶段:运行 FROM alpine:3.19 ENV TIME_ZONE=Asia/Shanghai RUN apk add --no-cache ca-certificates tzdata && \ ln -sf /usr/share/zoneinfo/$TIME_ZONE /etc/localtime WORKDIR /app # 复制编译好的二进制文件 COPY --from=builder /build/main . COPY --from=builder /build/config.yml ./ # 创建日志目录 RUN mkdir -p /logs /app/resource/log/run /app/resource/log/server EXPOSE 3004 CMD ["./main"]