ARG DOCKER_REGISTRY=docker.m.daocloud.io
ARG ALPINE_MIRROR=mirrors.aliyun.com
ARG GOPROXY=https://goproxy.cn,direct
ARG GOSUMDB=sum.golang.google.cn

FROM ${DOCKER_REGISTRY}/library/golang:1.26-alpine AS build

ARG ALPINE_MIRROR
ARG GOPROXY
ARG GOSUMDB
ARG TARGETOS=linux
ARG TARGETARCH=amd64

ENV GOPROXY=${GOPROXY}
ENV GOSUMDB=${GOSUMDB}

WORKDIR /src
RUN sed -i "s/dl-cdn.alpinelinux.org/${ALPINE_MIRROR}/g" /etc/apk/repositories \
	&& apk add --no-cache ca-certificates

COPY go.mod go.sum ./
RUN go mod download

COPY . .
RUN CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -o /out/smilefirst ./cmd/smilefirst

FROM ${DOCKER_REGISTRY}/library/alpine:3.22

ARG ALPINE_MIRROR

WORKDIR /app
RUN sed -i "s/dl-cdn.alpinelinux.org/${ALPINE_MIRROR}/g" /etc/apk/repositories \
	&& apk add --no-cache ca-certificates tzdata

COPY --from=build /out/smilefirst /app/smilefirst
COPY migrations /app/migrations

ENV GUAHAO_ADDR=:9800
ENV GUAHAO_DB_PATH=/data/smilefirst.db
ENV GUAHAO_SCHEMA_PATH=/app/migrations/schema.sql
ENV GUAHAO_LOG_LEVEL=info
ENV TZ=Asia/Shanghai

VOLUME ["/data"]
EXPOSE 9800

CMD ["/app/smilefirst", "serve"]
