From eece559fe7eec05a942faa8177ec263e95aef5f5 Mon Sep 17 00:00:00 2001 From: "Jonathan A. Sternberg" Date: Wed, 10 Oct 2018 20:38:43 -0500 Subject: [PATCH] Add a Dockerfile that matches influxdata-docker to build images from source (#4793) The images in influxdata-docker are meant to be built by downloading official releases. Sometimes, it is useful to build directly from source when you need an unofficial release. These images are meant to be used then using multi-stage builds so that it can build from source and then copy the results to images that match the official counterpart. --- Dockerfile | 18 ++++++++++++++++++ Dockerfile.alpine | 21 +++++++++++++++++++++ docker/entrypoint.sh | 8 ++++++++ 3 files changed, 47 insertions(+) create mode 100644 Dockerfile create mode 100644 Dockerfile.alpine create mode 100755 docker/entrypoint.sh diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..7c97201fc --- /dev/null +++ b/Dockerfile @@ -0,0 +1,18 @@ +FROM golang:1.11.0 as builder +ENV DEP_VERSION 0.5.0 +RUN curl -fsSL -o /usr/local/bin/dep https://github.com/golang/dep/releases/download/v${DEP_VERSION}/dep-linux-amd64 && chmod +x /usr/local/bin/dep +WORKDIR /go/src/github.com/influxdata/telegraf +COPY Gopkg.toml Gopkg.lock ./ +RUN dep ensure -vendor-only +COPY . /go/src/github.com/influxdata/telegraf +RUN go install ./cmd/... + +FROM buildpack-deps:stretch-curl +COPY --from=builder /go/bin/* /usr/bin/ +COPY etc/telegraf.conf /etc/telegraf/telegraf.conf + +EXPOSE 8125/udp 8092/udp 8094 + +COPY docker/entrypoint.sh /entrypoint.sh +ENTRYPOINT ["/entrypoint.sh"] +CMD ["telegraf"] diff --git a/Dockerfile.alpine b/Dockerfile.alpine new file mode 100644 index 000000000..d5ad52523 --- /dev/null +++ b/Dockerfile.alpine @@ -0,0 +1,21 @@ +FROM golang:1.11.0 as builder +ENV DEP_VERSION 0.5.0 +RUN curl -fsSL -o /usr/local/bin/dep https://github.com/golang/dep/releases/download/v${DEP_VERSION}/dep-linux-amd64 && chmod +x /usr/local/bin/dep +WORKDIR /go/src/github.com/influxdata/telegraf +COPY Gopkg.toml Gopkg.lock ./ +RUN dep ensure -vendor-only +COPY . /go/src/github.com/influxdata/telegraf +RUN CGO_ENABLED=0 go install ./cmd/... + +FROM alpine:3.6 +RUN echo 'hosts: files dns' >> /etc/nsswitch.conf +RUN apk add --no-cache iputils ca-certificates net-snmp-tools procps lm_sensors && \ + update-ca-certificates +COPY --from=builder /go/bin/* /usr/bin/ +COPY etc/telegraf.conf /etc/telegraf/telegraf.conf + +EXPOSE 8125/udp 8092/udp 8094 + +COPY docker/entrypoint.sh /entrypoint.sh +ENTRYPOINT ["/entrypoint.sh"] +CMD ["telegraf"] diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh new file mode 100755 index 000000000..6e7580b21 --- /dev/null +++ b/docker/entrypoint.sh @@ -0,0 +1,8 @@ +#!/bin/bash +set -e + +if [ "${1:0:1}" = '-' ]; then + set -- telegraf "$@" +fi + +exec "$@"