From e1b82589fa9f215638811621cf8e5521dd903c93 Mon Sep 17 00:00:00 2001 From: Igor Peshansky Date: Thu, 14 Sep 2017 19:57:58 -0400 Subject: [PATCH 1/6] Allow generating the docker image via make. Remove the package from the docker image once installed. --- pkg/docker/Dockerfile | 3 ++- pkg/docker/Dockerfile-trusty | 13 +++++++++++++ pkg/docker/Dockerfile-xenial | 13 +++++++++++++ src/Makefile | 18 ++++++++++++++++++ 4 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 pkg/docker/Dockerfile-trusty create mode 100644 pkg/docker/Dockerfile-xenial diff --git a/pkg/docker/Dockerfile b/pkg/docker/Dockerfile index 7578ed79..ec243cfd 100644 --- a/pkg/docker/Dockerfile +++ b/pkg/docker/Dockerfile @@ -5,7 +5,8 @@ ADD https://storage.googleapis.com/stackdriver-container-alpha/deb/xenial/stackd RUN apt-get update \ && (dpkg -i /stackdriver-metadata_${version}.xenial.deb || true) \ && apt-get install -f -y \ - && rm -rf /var/lib/apt/lists/* + && rm -rf /var/lib/apt/lists/* \ + && rm -rf /stackdriver-metadata_${version}.xenial.deb CMD /opt/stackdriver/metadata/sbin/metadatad diff --git a/pkg/docker/Dockerfile-trusty b/pkg/docker/Dockerfile-trusty new file mode 100644 index 00000000..237be414 --- /dev/null +++ b/pkg/docker/Dockerfile-trusty @@ -0,0 +1,13 @@ +FROM ubuntu:trusty + +ARG package +COPY ${package} / +RUN apt-get update \ + && (dpkg -i /${package} || true) \ + && apt-get install -f -y \ + && rm -rf /var/lib/apt/lists/* \ + && rm -rf /${package} + +CMD /opt/stackdriver/metadata/sbin/metadatad + +EXPOSE 8000 diff --git a/pkg/docker/Dockerfile-xenial b/pkg/docker/Dockerfile-xenial new file mode 100644 index 00000000..39564532 --- /dev/null +++ b/pkg/docker/Dockerfile-xenial @@ -0,0 +1,13 @@ +FROM ubuntu:xenial + +ARG package +COPY ${package} / +RUN apt-get update \ + && (dpkg -i /${package} || true) \ + && apt-get install -f -y \ + && rm -rf /var/lib/apt/lists/* \ + && rm -rf /${package} + +CMD /opt/stackdriver/metadata/sbin/metadatad + +EXPOSE 8000 diff --git a/src/Makefile b/src/Makefile index 9c06bbe1..ad61c13d 100644 --- a/src/Makefile +++ b/src/Makefile @@ -67,6 +67,10 @@ PKG_VERSION=0.0.13 PKG_RELEASE=1 PKG_MAINTAINER=Stackdriver Engineering +DOCKER_VERSION=0.2 +DOCKER_IMAGE=us.gcr.io/container-monitoring-storage/stackdriver-metadata-agent +DOCKER_TAG=$(DOCKER_VERSION)-$(PKG_VERSION)-$(PKG_RELEASE) + PKG_TMPDIR=$$(mktemp -d --tmpdir metadata-build.XXXXXXXXXX) DEB_PKG=$(PKG_NAME)_$(PKG_VERSION)-$(PKG_RELEASE)$(if $(DISTRO),.$(DISTRO),).deb @@ -103,6 +107,20 @@ $(RPM_PKG): metadatad $(wildcard ../pkg/rpm/*) Makefile rpm: $(RPM_PKG) +ifeq ($(findstring |$(DISTRO)|,|trusty|xenial|),) +docker: + /bin/false Missing or unknown distro "$(DISTRO)" +else +docker: $(DEB_PKG) ../pkg/docker/Dockerfile-$(DISTRO) + export TMPDIR=$(PKG_TMPDIR) && \ + export DOCKER_DIR=$$TMPDIR/docker && \ + mkdir -p $$DOCKER_DIR && \ + cp ../pkg/docker/Dockerfile-$(DISTRO) $$DOCKER_DIR/Dockerfile && \ + cp $(DEB_PKG) $$DOCKER_DIR/ && \ + docker build --build-arg package="$(DEB_PKG)" -t $(DOCKER_IMAGE):$(DOCKER_TAG) $$DOCKER_DIR && \ + $(RM) -r $$TMPDIR +endif + clean: $(RM) metadatad $(OBJS) From df84d886eee29efb27b7dc7e583d74c38e894991 Mon Sep 17 00:00:00 2001 From: Igor Peshansky Date: Thu, 14 Sep 2017 22:13:59 -0400 Subject: [PATCH 2/6] Add comments for standalone use. --- pkg/docker/Dockerfile-trusty | 1 + pkg/docker/Dockerfile-xenial | 1 + 2 files changed, 2 insertions(+) diff --git a/pkg/docker/Dockerfile-trusty b/pkg/docker/Dockerfile-trusty index 237be414..cdcf6157 100644 --- a/pkg/docker/Dockerfile-trusty +++ b/pkg/docker/Dockerfile-trusty @@ -1,3 +1,4 @@ +# To use directly, run: docker build --build-arg package=.trusty.deb -t -f Dockerfile-trusty FROM ubuntu:trusty ARG package diff --git a/pkg/docker/Dockerfile-xenial b/pkg/docker/Dockerfile-xenial index 39564532..0f7a91e3 100644 --- a/pkg/docker/Dockerfile-xenial +++ b/pkg/docker/Dockerfile-xenial @@ -1,3 +1,4 @@ +# To use directly, run: docker build --build-arg package=.xenial.deb -t -f Dockerfile-xenial FROM ubuntu:xenial ARG package From 6c4b7d484d7865567fef4789156789c383ec753f Mon Sep 17 00:00:00 2001 From: Igor Peshansky Date: Fri, 15 Sep 2017 12:19:36 -0400 Subject: [PATCH 3/6] Unify Dockerfile and Dockerfile-xenial; remove version from the in-container package filename. --- pkg/docker/Dockerfile | 14 +------------- pkg/docker/Dockerfile-trusty | 6 +++--- pkg/docker/Dockerfile-xenial | 9 +++++---- 3 files changed, 9 insertions(+), 20 deletions(-) mode change 100644 => 120000 pkg/docker/Dockerfile diff --git a/pkg/docker/Dockerfile b/pkg/docker/Dockerfile deleted file mode 100644 index ec243cfd..00000000 --- a/pkg/docker/Dockerfile +++ /dev/null @@ -1,13 +0,0 @@ -FROM ubuntu:xenial - -ARG version=0.0.10-1 -ADD https://storage.googleapis.com/stackdriver-container-alpha/deb/xenial/stackdriver-metadata_${version}.xenial.deb /stackdriver-metadata_${version}.xenial.deb -RUN apt-get update \ - && (dpkg -i /stackdriver-metadata_${version}.xenial.deb || true) \ - && apt-get install -f -y \ - && rm -rf /var/lib/apt/lists/* \ - && rm -rf /stackdriver-metadata_${version}.xenial.deb - -CMD /opt/stackdriver/metadata/sbin/metadatad - -EXPOSE 8000 diff --git a/pkg/docker/Dockerfile b/pkg/docker/Dockerfile new file mode 120000 index 00000000..e38faa1c --- /dev/null +++ b/pkg/docker/Dockerfile @@ -0,0 +1 @@ +Dockerfile-xenial \ No newline at end of file diff --git a/pkg/docker/Dockerfile-trusty b/pkg/docker/Dockerfile-trusty index cdcf6157..09fb843b 100644 --- a/pkg/docker/Dockerfile-trusty +++ b/pkg/docker/Dockerfile-trusty @@ -2,12 +2,12 @@ FROM ubuntu:trusty ARG package -COPY ${package} / +COPY ${package} /stackdriver-metadata.deb RUN apt-get update \ - && (dpkg -i /${package} || true) \ + && (dpkg -i /stackdriver-metadata.deb || true) \ && apt-get install -f -y \ && rm -rf /var/lib/apt/lists/* \ - && rm -rf /${package} + && rm -rf /stackdriver-metadata.deb CMD /opt/stackdriver/metadata/sbin/metadatad diff --git a/pkg/docker/Dockerfile-xenial b/pkg/docker/Dockerfile-xenial index 0f7a91e3..200e5501 100644 --- a/pkg/docker/Dockerfile-xenial +++ b/pkg/docker/Dockerfile-xenial @@ -1,13 +1,14 @@ # To use directly, run: docker build --build-arg package=.xenial.deb -t -f Dockerfile-xenial FROM ubuntu:xenial -ARG package -COPY ${package} / +ARG version=0.0.13-1 +ARG package=https://storage.googleapis.com/stackdriver-container-alpha/deb/xenial/stackdriver-metadata_${version}.xenial.deb +ADD ${package} /stackdriver-metadata.deb RUN apt-get update \ - && (dpkg -i /${package} || true) \ + && (dpkg -i /stackdriver-metadata.deb || true) \ && apt-get install -f -y \ && rm -rf /var/lib/apt/lists/* \ - && rm -rf /${package} + && rm -rf /stackdriver-metadata.deb CMD /opt/stackdriver/metadata/sbin/metadatad From dd2851227ae329dd3b03202933e62d3795b3bed9 Mon Sep 17 00:00:00 2001 From: Igor Peshansky Date: Fri, 15 Sep 2017 12:35:22 -0400 Subject: [PATCH 4/6] Rely on the presence of a properly suffixed Dockerfile instead of a make conditional. --- src/Makefile | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/Makefile b/src/Makefile index ad61c13d..80b5ad2c 100644 --- a/src/Makefile +++ b/src/Makefile @@ -107,10 +107,6 @@ $(RPM_PKG): metadatad $(wildcard ../pkg/rpm/*) Makefile rpm: $(RPM_PKG) -ifeq ($(findstring |$(DISTRO)|,|trusty|xenial|),) -docker: - /bin/false Missing or unknown distro "$(DISTRO)" -else docker: $(DEB_PKG) ../pkg/docker/Dockerfile-$(DISTRO) export TMPDIR=$(PKG_TMPDIR) && \ export DOCKER_DIR=$$TMPDIR/docker && \ @@ -119,7 +115,6 @@ docker: $(DEB_PKG) ../pkg/docker/Dockerfile-$(DISTRO) cp $(DEB_PKG) $$DOCKER_DIR/ && \ docker build --build-arg package="$(DEB_PKG)" -t $(DOCKER_IMAGE):$(DOCKER_TAG) $$DOCKER_DIR && \ $(RM) -r $$TMPDIR -endif clean: $(RM) metadatad $(OBJS) From 54b96e9bea03b46f72eafee894438e9bbeeaede9 Mon Sep 17 00:00:00 2001 From: Igor Peshansky Date: Fri, 15 Sep 2017 12:35:53 -0400 Subject: [PATCH 5/6] Split variable assignment from export to retain the exit code of mktemp. --- src/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Makefile b/src/Makefile index 80b5ad2c..45ec06e7 100644 --- a/src/Makefile +++ b/src/Makefile @@ -77,7 +77,7 @@ DEB_PKG=$(PKG_NAME)_$(PKG_VERSION)-$(PKG_RELEASE)$(if $(DISTRO),.$(DISTRO),).deb RPM_PKG=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_RELEASE)$(if $(DISTRO),.$(DISTRO),).x86_64.rpm $(DEB_PKG): metadatad $(wildcard ../pkg/deb/debian/*) Makefile - export TMPDIR=$(PKG_TMPDIR) && \ + TMPDIR=$(PKG_TMPDIR) && export TMPDIR && \ export DEB_DIR=$$TMPDIR/deb && \ mkdir -p $$DEB_DIR/package && \ $(MAKE) DESTDIR=$$DEB_DIR/package install && \ @@ -98,7 +98,7 @@ $(DEB_PKG): metadatad $(wildcard ../pkg/deb/debian/*) Makefile deb: $(DEB_PKG) $(RPM_PKG): metadatad $(wildcard ../pkg/rpm/*) Makefile - export TMPDIR=$(PKG_TMPDIR) && \ + TMPDIR=$(PKG_TMPDIR) && export TMPDIR && \ export RPM_DIR=$$TMPDIR/rpm && \ mkdir -p $$RPM_DIR/package && \ $(MAKE) DESTDIR=$$RPM_DIR/package install && \ @@ -108,7 +108,7 @@ $(RPM_PKG): metadatad $(wildcard ../pkg/rpm/*) Makefile rpm: $(RPM_PKG) docker: $(DEB_PKG) ../pkg/docker/Dockerfile-$(DISTRO) - export TMPDIR=$(PKG_TMPDIR) && \ + TMPDIR=$(PKG_TMPDIR) && export TMPDIR && \ export DOCKER_DIR=$$TMPDIR/docker && \ mkdir -p $$DOCKER_DIR && \ cp ../pkg/docker/Dockerfile-$(DISTRO) $$DOCKER_DIR/Dockerfile && \ From b780e9e2b884a35628b8a441087f8d66eb6e3155 Mon Sep 17 00:00:00 2001 From: Igor Peshansky Date: Fri, 15 Sep 2017 15:30:02 -0400 Subject: [PATCH 6/6] Oops. COPY->ADD. --- pkg/docker/Dockerfile-trusty | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/docker/Dockerfile-trusty b/pkg/docker/Dockerfile-trusty index 09fb843b..15937e0e 100644 --- a/pkg/docker/Dockerfile-trusty +++ b/pkg/docker/Dockerfile-trusty @@ -2,7 +2,7 @@ FROM ubuntu:trusty ARG package -COPY ${package} /stackdriver-metadata.deb +ADD ${package} /stackdriver-metadata.deb RUN apt-get update \ && (dpkg -i /stackdriver-metadata.deb || true) \ && apt-get install -f -y \