From ec06aca188b039e8c18e4ae08304bffc030a68d3 Mon Sep 17 00:00:00 2001 From: Damien Lespiau Date: Tue, 19 Sep 2017 13:41:00 +0100 Subject: [PATCH] Create Docker images for the examples When those are published on Dockerhub, people will be able to start those examples in fewer steps than the current documentation: https://prometheus.io/docs/introduction/getting_started/#starting-up-some-sample-targets While relying on Docker may not be always wished, giving the possibility to quickly start a daemon that exposes metrics can be useful in many tutorials. The simple and random example are build as static binaries and packaged as single binaries in Docker images. This commit tries really hard to limit the number of per-example maintenance work by sharing most of the Makefile to build the Docker images. The tiny top level Makefiles in each example directory are strictly identical. Updates: #347 --- .gitignore | 4 ++++ examples/random/Dockerfile | 20 ++++++++++++++++++++ examples/simple/Dockerfile | 20 ++++++++++++++++++++ 3 files changed, 44 insertions(+) create mode 100644 examples/random/Dockerfile create mode 100644 examples/simple/Dockerfile diff --git a/.gitignore b/.gitignore index f6fc2e8..5725b80 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,10 @@ _obj _test +# Examples +/examples/simple/simple +/examples/random/random + # Architecture specific extensions/prefixes *.[568vq] [568vq].out diff --git a/examples/random/Dockerfile b/examples/random/Dockerfile new file mode 100644 index 0000000..32b6846 --- /dev/null +++ b/examples/random/Dockerfile @@ -0,0 +1,20 @@ +# This Dockerfile builds an image for a client_golang example. +# +# Use as (from the root for the client_golang repository): +# docker build -f examples/$name/Dockerfile -t prometheus/golang-example-$name . + +# Builder image, where we build the example. +FROM golang:1.9.0 AS builder +WORKDIR /go/src/github.com/prometheus/client_golang +COPY . . +WORKDIR /go/src/github.com/prometheus/client_golang/prometheus +RUN go get -d +WORKDIR /go/src/github.com/prometheus/client_golang/examples/random +RUN CGO_ENABLED=0 GOOS=linux go build -a -tags netgo -ldflags '-w' + +# Final image. +FROM scratch +LABEL maintainer "The Prometheus Authors " +COPY --from=builder /go/src/github.com/prometheus/client_golang/examples/random . +EXPOSE 8080 +ENTRYPOINT ["/random"] diff --git a/examples/simple/Dockerfile b/examples/simple/Dockerfile new file mode 100644 index 0000000..99b49d7 --- /dev/null +++ b/examples/simple/Dockerfile @@ -0,0 +1,20 @@ +# This Dockerfile builds an image for a client_golang example. +# +# Use as (from the root for the client_golang repository): +# docker build -f examples/$name/Dockerfile -t prometheus/golang-example-$name . + +# Builder image, where we build the example. +FROM golang:1.9.0 AS builder +WORKDIR /go/src/github.com/prometheus/client_golang +COPY . . +WORKDIR /go/src/github.com/prometheus/client_golang/prometheus +RUN go get -d +WORKDIR /go/src/github.com/prometheus/client_golang/examples/simple +RUN CGO_ENABLED=0 GOOS=linux go build -a -tags netgo -ldflags '-w' + +# Final image. +FROM scratch +LABEL maintainer "The Prometheus Authors " +COPY --from=builder /go/src/github.com/prometheus/client_golang/examples/simple . +EXPOSE 8080 +ENTRYPOINT ["/simple"]