# syntax=docker/dockerfile:1
# ---------------------------------------------------------------------------
# Estágio 1: compila o binário estático (sem CGO) com o frontend embutido.
# ---------------------------------------------------------------------------
FROM golang:1.24-alpine AS build

WORKDIR /src

# Dependências primeiro, para aproveitar o cache de camadas.
COPY go.mod go.sum ./
RUN go mod download

COPY . .
RUN CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o /out/notas ./cmd/notas \
 && mkdir -p /out/data \
 && chown -R 65534:65534 /out/data

# ---------------------------------------------------------------------------
# Estágio 2: imagem final mínima (scratch), apenas o binário + diretório de dados.
# ---------------------------------------------------------------------------
FROM scratch

COPY --from=build /out/notas /notas
COPY --from=build --chown=65534:65534 /out/data /data

USER 65534:65534
EXPOSE 8080
ENV NOTES_DATA_DIR=/data \
    NOTES_ADDR=:8080

VOLUME /data

ENTRYPOINT ["/notas"]
