ARG BUILD_IMAGE=golang:1.26.3-alpine ARG RUNTIME_IMAGE=alpine:3.23 FROM ${BUILD_IMAGE} AS build ARG GOPROXY=https://goproxy.cn,direct ENV GOPROXY=${GOPROXY} WORKDIR /src COPY go.mod go.sum* ./ RUN go mod download COPY . . RUN CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o /out/api ./cmd/api RUN CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o /out/migrate ./cmd/migrate RUN CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o /out/bootstrap-admin ./cmd/bootstrap-admin FROM ${RUNTIME_IMAGE} RUN addgroup -S app && adduser -S -G app app COPY --from=build /out/api /usr/local/bin/api COPY --from=build /out/migrate /usr/local/bin/migrate COPY --from=build /out/bootstrap-admin /usr/local/bin/bootstrap-admin USER app EXPOSE 8080 ENTRYPOINT ["/usr/local/bin/api"]