FROM golang:1.26-alpine AS build

WORKDIR /src
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 go build -o /out/codevault .

FROM alpine:3.20

RUN apk add --no-cache ca-certificates
WORKDIR /app
COPY --from=build /out/codevault ./codevault

# /app/data's ownership is picked up by Docker as the initial content of any
# named volume mounted there, so the "nobody" user can still write the DB file.
RUN mkdir -p /app/data && chown -R nobody:nobody /app/data
USER nobody

EXPOSE 8080

ENTRYPOINT ["./codevault"]
CMD ["run", "--config", "/app/config.yaml"]
