From b6c3074ba028ebb19059d5ec388d5724332c3244 Mon Sep 17 00:00:00 2001 From: Tobias Furuholm 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 MAINTAINER Lucas Servén MAINTAINER Rithu John +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 # 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