FROM golang:1.23-alpine AS build WORKDIR /src COPY go.mod ./ COPY cmd ./cmd COPY internal ./internal COPY web ./web RUN go build -trimpath -ldflags="-s -w" -o /out/log-guardian ./cmd/server FROM alpine:3.20 LABEL org.opencontainers.image.title="log-guardian" LABEL org.opencontainers.image.description="Loki-backed log monitoring, alerting, and guarded remediation service." WORKDIR /app RUN adduser -D -H guardian && mkdir -p /data && chown guardian:guardian /data COPY --from=build /out/log-guardian /usr/local/bin/log-guardian COPY --from=build /src/web ./web USER guardian EXPOSE 8080 VOLUME ["/data"] CMD ["/usr/local/bin/log-guardian"]