From b6c3074ba028ebb19059d5ec388d5724332c3244 Mon Sep 17 00:00:00 2001
From: Tobias Furuholm <tobiasfuruholm@gmail.com>
Date: Mon, 18 Sep 2017 08:56:39 +0200
Subject: [PATCH] Replace docker-build script with multi-stage build

---
 .dockerignore        |  4 +---
 Dockerfile           | 10 ++++++++--
 Makefile             | 14 ++------------
 scripts/docker-build | 15 ---------------
 4 files changed, 11 insertions(+), 32 deletions(-)
 delete mode 100755 scripts/docker-build

diff --git a/.dockerignore b/.dockerignore
index 1c99e92d..ba077a40 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -1,3 +1 @@
-*
-!_output/bin
-!web
+bin
diff --git a/Dockerfile b/Dockerfile
index 7ab96f92..eec1acbe 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,9 +1,15 @@
-FROM alpine:3.4
+FROM golang:1.8.3-alpine
 
 MAINTAINER Ed Rooth <ed.rooth@coreos.com>
 MAINTAINER Lucas Servén <lucas.serven@coreos.com>
 MAINTAINER Rithu John <rithu.john@coreos.com>
 
+RUN apk add --no-cache --update alpine-sdk
+
+COPY . /go/src/github.com/coreos/dex
+RUN cd /go/src/github.com/coreos/dex && make release-binary
+
+FROM alpine:3.4
 # Dex connectors, such as GitHub and Google logins require root certificates.
 # Proper installations should manage those certificates, but it's a bad user
 # experience when this doesn't work out of the box.
@@ -11,7 +17,7 @@ MAINTAINER Rithu John <rithu.john@coreos.com>
 # OpenSSL is required so wget can query HTTPS endpoints for health checking.
 RUN apk add --update ca-certificates openssl
 
-COPY _output/bin/dex /usr/local/bin/dex
+COPY --from=0 /go/bin/dex /usr/local/bin/dex
 
 # Import frontend assets and set the correct CWD directory so the assets
 # are in the default path.
diff --git a/Makefile b/Makefile
index 9792c5b1..e762f456 100644
--- a/Makefile
+++ b/Makefile
@@ -9,8 +9,6 @@ DOCKER_REPO=quay.io/coreos/dex
 DOCKER_IMAGE=$(DOCKER_REPO):$(VERSION)
 
 $( shell mkdir -p bin )
-$( shell mkdir -p _output/images )
-$( shell mkdir -p _output/bin )
 
 user=$(shell id -u -n)
 group=$(shell id -g -n)
@@ -58,12 +56,8 @@ lint:
       golint -set_exit_status $$package $$i || exit 1; \
 	done
 
-_output/bin/dex:
-	@./scripts/docker-build
-	@sudo chown $(user):$(group) _output/bin/dex
-
 .PHONY: docker-image
-docker-image: clean-release _output/bin/dex
+docker-image:
 	@sudo docker build -t $(DOCKER_IMAGE) .
 
 .PHONY: proto
@@ -85,13 +79,9 @@ bin/protoc-gen-go:
 check-go-version:
 	@./scripts/check-go-version
 
-clean: clean-release
+clean:
 	@rm -rf bin/
 
-.PHONY: clean-release
-clean-release:
-	@rm -rf _output/
-
 testall: testrace vet fmt lint
 
 FORCE:
diff --git a/scripts/docker-build b/scripts/docker-build
deleted file mode 100755
index 8195410f..00000000
--- a/scripts/docker-build
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/bash -e
-
-mkdir -p _output/bin
-
-sudo docker run \
-    --cidfile=cid \
-    -v $PWD:/go/src/github.com/coreos/dex:ro \
-    -w /go/src/github.com/coreos/dex \
-    golang:1.8.3-alpine \
-    /bin/sh -x -c \
-    'apk add --no-cache --update alpine-sdk && make release-binary'
-
-sudo docker cp $( cat cid ):/go/bin/dex _output/bin/dex
-sudo docker rm $( cat cid )
-sudo rm cid
-- 
GitLab