ARG BASE_REGISTRY=docker.io/library
FROM ${BASE_REGISTRY}/golang:1.25-alpine AS builder
LABEL maintainer="iotlcm-openapi"

ARG GOPROXY=https://goproxy.cn,direct
ENV GOPROXY=${GOPROXY} \
    GOSUMDB=off

WORKDIR /app
ENV GO111MODULE=on \
    CGO_ENABLED=0 \
    GOOS=linux \
    GOARCH=amd64

COPY go.mod go.sum ./
RUN go mod download || (go clean -modcache && go mod download)

ARG BuildVersion
ARG BuildTime
ARG CommitID

COPY . .
RUN go build -trimpath -ldflags="-s -w -X main.BuildVersion=${BuildVersion} -X main.BuildTime=${BuildTime} -X main.CommitID=${CommitID}" -o /app/bin/iotlcm-openapi .

FROM ${BASE_REGISTRY}/alpine:3.23 AS alpine
LABEL maintainer="iotlcm-openapi"

ARG ALPINE_MIRROR=mirrors.aliyun.com
RUN sed -i "s|dl-cdn.alpinelinux.org|${ALPINE_MIRROR}|g" /etc/apk/repositories && \
    apk add --no-cache ca-certificates tzdata && \
    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
    echo "Asia/Shanghai" > /etc/timezone

ENV TZ=Asia/Shanghai \
    WORKDIR=/app

WORKDIR $WORKDIR
COPY --from=builder /app/bin/iotlcm-openapi $WORKDIR/main
COPY --from=builder /app/resource $WORKDIR/resource
COPY --from=builder /app/manifest/i18n $WORKDIR/manifest/i18n
COPY --from=builder /app/build/config.example.yaml $WORKDIR/config/config.yaml
RUN mkdir -p $WORKDIR/config

RUN chmod +x $WORKDIR/main

EXPOSE 8000

CMD ["./main"]
