From 4617c01aaf1836ae0c17465d8c731a7c6b316a3a Mon Sep 17 00:00:00 2001 From: Richard Mitchell <richard.j.mitchell@gmail.com> Date: Sun, 5 Aug 2018 09:30:56 +0100 Subject: [PATCH] Build and distribution support --- .dockerignore | 6 ++++++ Dockerfile => Dockerfile.amd64 | 8 +++++--- Dockerfile.arm7 | 11 +++++++++++ Dockerfile.build.amd64 | 7 +++++++ Dockerfile.build.arm7 | 7 +++++++ Makefile | 36 +++++++++++++++++++++++++++------- build/.gitignore | 2 ++ 7 files changed, 67 insertions(+), 10 deletions(-) create mode 100644 .dockerignore rename Dockerfile => Dockerfile.amd64 (50%) create mode 100644 Dockerfile.arm7 create mode 100644 Dockerfile.build.amd64 create mode 100644 Dockerfile.build.arm7 create mode 100644 build/.gitignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..dab5c2d --- /dev/null +++ b/.dockerignore @@ -0,0 +1,6 @@ +Dockerfile* +*.md +Gopkg.* +hue_exporter +LICENSE +Makefile \ No newline at end of file diff --git a/Dockerfile b/Dockerfile.amd64 similarity index 50% rename from Dockerfile rename to Dockerfile.amd64 index e7a28b8..a5e4c2a 100644 --- a/Dockerfile +++ b/Dockerfile.amd64 @@ -1,8 +1,10 @@ -FROM quay.io/prometheus/busybox:latest +FROM amd64/busybox:musl MAINTAINER Richard Mitchell <hue-exporter@mitch.org.uk> -COPY hue_exporter /bin/hue_exporter -COPY hue_exporter.example.yml /etc/hue_exporter/config.yml +COPY ./build/hue_exporter.amd64 /bin/hue_exporter +COPY hue_exporter.example.yml /etc/hue_exporter/config.yml + +VOLUME /etc/hue_exporter EXPOSE 9366 ENTRYPOINT [ "/bin/hue_exporter" ] diff --git a/Dockerfile.arm7 b/Dockerfile.arm7 new file mode 100644 index 0000000..515b735 --- /dev/null +++ b/Dockerfile.arm7 @@ -0,0 +1,11 @@ +FROM arm32v7/busybox:latest +MAINTAINER Richard Mitchell <hue-exporter@mitch.org.uk> + +COPY ./build/hue_exporter.arm7 /bin/hue_exporter +COPY hue_exporter.example.yml /etc/hue_exporter/config.yml + +VOLUME /etc/hue_exporter + +EXPOSE 9366 +ENTRYPOINT [ "/bin/hue_exporter" ] +CMD [ "--config.file=/etc/hue_exporter/config.yml" ] \ No newline at end of file diff --git a/Dockerfile.build.amd64 b/Dockerfile.build.amd64 new file mode 100644 index 0000000..facfbb2 --- /dev/null +++ b/Dockerfile.build.amd64 @@ -0,0 +1,7 @@ +FROM amd64/golang:stretch + +COPY . /go/src/github.com/mitchellrj/hue_exporter +WORKDIR /go/src/github.com/mitchellrj/hue_exporter + +VOLUME /build +CMD go build -o /build/hue_exporter.amd64 diff --git a/Dockerfile.build.arm7 b/Dockerfile.build.arm7 new file mode 100644 index 0000000..afa956b --- /dev/null +++ b/Dockerfile.build.arm7 @@ -0,0 +1,7 @@ +FROM arm32v7/golang:stretch + +COPY . /go/src/github.com/mitchellrj/hue_exporter +WORKDIR /go/src/github.com/mitchellrj/hue_exporter + +VOLUME /build +CMD go build -o /build/hue_exporter.arm7 diff --git a/Makefile b/Makefile index 5d80863..f80bc56 100644 --- a/Makefile +++ b/Makefile @@ -1,24 +1,46 @@ all: style staticcheck build test style: - gofmt -d $$(find . -path ./vendor -prune -o -name '*.go' -print) | grep '^' + ! gofmt -d $$(find . -path ./vendor -prune -o -name '*.go' -print) | grep '^' test: - go test ./... + go test ./... format: - go fmt ./... + go fmt ./... vet: - go vet ./... + go vet ./... staticcheck: - staticcheck ./... + staticcheck ./... build: - go build + go build -docker: +dist: darwin amd64 arm7 docker + +darwin: + cp hue_exporter build/hue_exporter.darwin + +amd64: + docker build --pull -f Dockerfile.build.amd64 -t hue_exporter_builder:latest . + docker run -v $$(pwd)/build:/build hue_exporter_builder:latest +arm7: + docker build --pull -f Dockerfile.build.arm7 -t hue_exporter_builder:latest-arm . + docker run -v $$(pwd)/build:/build hue_exporter_builder:latest-arm + +docker: + docker build --pull -f Dockerfile.amd64 -t mitchellrj/hue_exporter:latest . + docker tag mitchellrj/hue_exporter:latest mitchellrj/hue_exporter:$$(build/hue_exporter.darwin -V) + docker build --pull -f Dockerfile.arm7 -t mitchellrj/hue_exporter:latest-arm7 . + docker tag mitchellrj/hue_exporter:latest mitchellrj/hue_exporter:$$(build/hue_exporter.darwin -V)-arm7 + +push: + docker push mitchellrj/hue_exporter:latest + docker push mitchellrj/hue_exporter:$$(build/hue_exporter.darwin -V) + docker push mitchellrj/hue_exporter:latest-arm7 + docker push mitchellrj/hue_exporter:$$(build/hue_exporter.darwin -V)-arm7 .PHONY: all style test format vet staticcheck build \ No newline at end of file diff --git a/build/.gitignore b/build/.gitignore new file mode 100644 index 0000000..c96a04f --- /dev/null +++ b/build/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore \ No newline at end of file -- GitLab