# ── Build stage: compile ntfy-bridge from source ────────────────────────── FROM alpine:3.20 AS builder RUN apk add --no-cache gcc musl-dev git make # Build V from source RUN git clone --depth 1 https://github.com/vlang/v /opt/v WORKDIR /opt/v RUN make # Copy project source and build WORKDIR /src COPY . . RUN /opt/v/v -prod -o /ntfy-bridge . # ── Runtime stage: minimal image ─────────────────────────────────────────── FROM alpine:3.20 RUN apk add --no-cache ca-certificates tzdata COPY --from=builder /ntfy-bridge /usr/local/bin/ntfy-bridge WORKDIR /etc/ntfy-bridge EXPOSE 9090 HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ CMD wget --no-verbose --tries=1 --spider http://localhost:9090/health || exit 1 ENTRYPOINT ["/usr/local/bin/ntfy-bridge"] CMD ["--quiet", "--config", "/etc/ntfy-bridge/ntfy-bridge.yaml"]