FROM golang:1.25-alpine AS build WORKDIR /src ENV CGO_ENABLED=0 COPY go.mod go.sum ./ RUN go mod download COPY . . ARG VERSION=dev RUN go build -trimpath -ldflags "-s -w -X main.version=${VERSION}" -o /out/vibetree ./cmd/vibetree FROM alpine:3.20 RUN apk add --no-cache ca-certificates tzdata && \ addgroup -S vibetree && adduser -S vibetree -G vibetree WORKDIR /app COPY --from=build /out/vibetree /usr/local/bin/vibetree RUN mkdir -p /app/data && chown -R vibetree:vibetree /app/data USER vibetree VOLUME ["/app/data"] EXPOSE 8080 HEALTHCHECK --interval=30s --timeout=3s --start-period=5s CMD wget -qO- http://127.0.0.1:8080/healthz || exit 1 ENTRYPOINT ["vibetree"] CMD ["serve", "-addr", ":8080", "-db", "/app/data/vibetree.db"]