11# syntax=docker/dockerfile:1.23@sha256:2780b5c3bab67f1f76c781860de469442999ed1a0d7992a5efdf2cffc0e3d769
22
33FROM golang:1.26-alpine@sha256:f85330846cde1e57ca9ec309382da3b8e6ae3ab943d2739500e08c86393a21b1 AS builder
4+ # Allow build flags to be passed in at build time, for example debug flags
5+ ARG DEBUG_BUILD
6+ ENV DEBUG_BUILD=${DEBUG_BUILD}
7+
48RUN apk add --no-cache gcc geos-dev musl-dev
59WORKDIR /root/flow
610
@@ -21,7 +25,8 @@ ENV CGO_ENABLED=1
2125# Generate the typed handler wrapper
2226RUN go generate
2327ENV GOCACHE=/root/.cache/go-build
24- RUN --mount=type=cache,target="/root/.cache/go-build" go build -o /root/peer-flow
28+ RUN --mount=type=cache,target="/root/.cache/go-build" go build ${DEBUG_BUILD:+-gcflags} ${DEBUG_BUILD:+"all=-N -l" } -o /root/peer-flow
29+ RUN --mount=type=cache,target="/root/.cache/go-build" go install github.com/go-delve/delve/cmd/dlv@latest
2530
2631FROM alpine:3.23@sha256:5b10f432ef3da1b8d4c7eb6c487f2f5a8f096bc91145e68878dd4a5019afde11 AS flow-base
2732ENV TZ=UTC
@@ -58,6 +63,17 @@ ENV PEERDB_VERSION_SHA_SHORT=${PEERDB_VERSION_SHA_SHORT}
5863ENTRYPOINT ["./peer-flow" , "snapshot-worker" ]
5964
6065
66+ FROM flow-base AS flow-worker-debug
67+ ENV OTEL_METRIC_EXPORT_INTERVAL=10000
68+ ENV OTEL_EXPORTER_OTLP_COMPRESSION=gzip
69+ ARG PEERDB_VERSION_SHA_SHORT
70+ ENV PEERDB_VERSION_SHA_SHORT=${PEERDB_VERSION_SHA_SHORT}
71+ USER root
72+ COPY --from=builder /go/bin/dlv /usr/local/bin/dlv
73+ USER peerdb
74+ EXPOSE 40000
75+ ENTRYPOINT ["dlv" , "--headless" , "--continue" , "--accept-multiclient" , "--listen=:40000" , "--api-version=2" , "exec" , "./peer-flow" , "--" , "worker" ]
76+
6177FROM flow-base AS flow-maintenance
6278
6379ARG PEERDB_VERSION_SHA_SHORT
0 commit comments