feat(docker): multi-stage build for collector and receiver
All checks were successful
ci / build (push) Successful in 1m55s
All checks were successful
ci / build (push) Successful in 1m55s
Add multi-stage Dockerfile that can build both images: - `docker build --target collector` for the collector - `docker build --target receiver` for the receiver (with CGO for SQLite) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
cfe583fbc4
commit
d99cd1dd56
1 changed files with 25 additions and 4 deletions
29
Dockerfile
29
Dockerfile
|
|
@ -1,16 +1,37 @@
|
|||
FROM golang:1.25-alpine AS builder
|
||||
FROM golang:1.25-alpine AS builder-base
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY go.mod ./
|
||||
COPY go.mod go.sum ./
|
||||
RUN go mod download
|
||||
|
||||
COPY . .
|
||||
|
||||
# Collector build (no CGO needed)
|
||||
FROM builder-base AS builder-collector
|
||||
|
||||
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" -o /resource-collector ./cmd/collector
|
||||
|
||||
FROM alpine:3.19
|
||||
# Receiver build (CGO needed for SQLite)
|
||||
FROM builder-base AS builder-receiver
|
||||
|
||||
COPY --from=builder /resource-collector /usr/local/bin/resource-collector
|
||||
RUN apk add --no-cache gcc musl-dev
|
||||
RUN CGO_ENABLED=1 GOOS=linux go build -ldflags="-s -w" -o /metrics-receiver ./cmd/receiver
|
||||
|
||||
# Collector image
|
||||
FROM alpine:3.19 AS collector
|
||||
|
||||
COPY --from=builder-collector /resource-collector /usr/local/bin/resource-collector
|
||||
|
||||
ENTRYPOINT ["/usr/local/bin/resource-collector"]
|
||||
|
||||
# Receiver image
|
||||
FROM alpine:3.19 AS receiver
|
||||
|
||||
RUN apk add --no-cache sqlite-libs
|
||||
|
||||
COPY --from=builder-receiver /metrics-receiver /usr/local/bin/metrics-receiver
|
||||
|
||||
EXPOSE 8080
|
||||
|
||||
ENTRYPOINT ["/usr/local/bin/metrics-receiver"]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue