From 04e200eb548385da3f01d2f13d25a4ced08eb678 Mon Sep 17 00:00:00 2001 From: "Stephen McQuay (smcquay)" Date: Tue, 17 Apr 2018 15:01:22 -0700 Subject: [PATCH] Uses multi-stage builds to create images follows along here loosely: https://docs.docker.com/develop/develop-images/multistage-build/ https://blog.alexellis.io/mutli-stage-docker-builds/ --- Dockerfile | 7 ++++++- Dockerfile.build | 7 ------- Makefile | 19 ++++++++++--------- 3 files changed, 16 insertions(+), 17 deletions(-) delete mode 100644 Dockerfile.build diff --git a/Dockerfile b/Dockerfile index 186137b..a7d4fae 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,13 @@ +FROM golang:1.10.1 as build +WORKDIR /go/src/mcquay.me/lim +COPY . . +RUN CGO_ENABLED=0 GOOS=linux go build -o /usr/local/bin/lim . + FROM alpine:latest RUN apk --no-cache add ca-certificates WORKDIR / -COPY build/lim /bin/ +COPY --from=build /usr/local/bin/lim /bin/ CMD ["/bin/sh", "-c", "cat /dev/urandom | /bin/lim 16b | xxd"] diff --git a/Dockerfile.build b/Dockerfile.build deleted file mode 100644 index dd87bcc..0000000 --- a/Dockerfile.build +++ /dev/null @@ -1,7 +0,0 @@ -FROM golang:1.10.1 - -WORKDIR /go/src/mcquay.me/lim - -COPY . . - -RUN CGO_ENABLED=0 GOOS=linux go build -o /usr/local/bin/lim . diff --git a/Makefile b/Makefile index b9e8103..990e8e7 100644 --- a/Makefile +++ b/Makefile @@ -1,19 +1,20 @@ GOFILES := $(shell find . -type f | grep go$$ ) -build/lim: build ${GOFILES} - @docker build -t smcquay/lim:build . -f Dockerfile.build > /dev/null - @docker create --name ext smcquay/lim:build > /dev/null - @docker cp ext:/usr/local/bin/lim build/ > /dev/null +build/lim: build build/.docker-image ${GOFILES} + @echo "fetching binary from image" + @docker create --name ext smcquay/lim:latest > /dev/null + @docker cp ext:/bin/lim build/ > /dev/null @docker rm -f ext > /dev/null - @docker image rm smcquay/lim:build > /dev/null + @touch build/lim + +build/.docker-image: ${GOFILES} + @echo "building docker image" + @docker build --no-cache -t smcquay/lim:latest . > /dev/null + @touch build/.docker-image build: @mkdir build -.PHONY: docker-image -docker-image: build/lim - @docker build --no-cache -t smcquay/lim:latest . > /dev/null - .PHONY: clean clean: @rm -rf build