diff --git a/.dockerignore b/.dockerignore
index 1c99e92d1156bd277d3c426560691d9a405cab29..ba077a4031add5b3a04384f8b9cfc414efbf47dd 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -1,3 +1 @@
-*
-!_output/bin
-!web
+bin
diff --git a/Dockerfile b/Dockerfile
index 7ab96f92385a4c22346a364c4dc433f274a19097..eec1acbedd0bbef1afe4b8a93ef197057ce502f9 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 9792c5b1675e369dee3cd48320102e0b2df156fe..e762f456d831127856e022de9ba574393f8ff7ba 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 8195410f2464d954395e6e82e55fa9ea6bb09f6a..0000000000000000000000000000000000000000
--- 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