ARG BASE_REGISTRY=docker.io/library
FROM ${BASE_REGISTRY}/golang:1.25-alpine AS builder

LABEL stage=gobuilder

ENV GOPROXY=https://goproxy.cn,direct
ENV TZ=Asia/Shanghai
ENV CGO_ENABLED=1
ENV GOOS=linux
ENV GOARCH=amd64

# 基础镜像源：阿里云 Alpine 镜像站曾出现索引与实际文件不同步（APKINDEX 标 r24、
# 目录只有 r23，导致 musl/musl-dev 拉取 404）。改用清华源，可用性更稳。
RUN sed -i 's#https://dl-cdn.alpinelinux.org/alpine#https://mirrors.tuna.tsinghua.edu.cn/alpine#g' /etc/apk/repositories && \
    apk add --no-cache gcc musl-dev git tzdata expect

WORKDIR /build

COPY go.mod go.sum ./

RUN go mod download

COPY . .

ARG BuildVersion=unknown
ARG CommitID=unknown
ARG BuildTime=unknown

RUN set -euxo pipefail && \
    pwd && ls -la && \
    go build -v \
        -o /build/iotlcmadmin_svc \
        -ldflags "-X main.BuildVersion=${BuildVersion} -X main.CommitID=${CommitID} -X main.BuildTime=${BuildTime}" \
        .

FROM ${BASE_REGISTRY}/alpine:3.23 AS alpine

RUN apk add --no-cache ca-certificates tzdata

ENV TZ=Asia/Shanghai

EXPOSE 13100

WORKDIR /app
COPY --from=builder /build/iotlcmadmin_svc /app/iotlcmadmin_svc
COPY --from=builder /build/build/config.example.yaml /app/config/config.yaml

CMD ["./iotlcmadmin_svc"]
