From f28c8bc1c2b84d54068f0218a9b1f64b83cf6576 Mon Sep 17 00:00:00 2001 From: cimnine Date: Mon, 20 Sep 2021 14:18:48 +0200 Subject: [PATCH] Multistage Docker build --- .dockerignore | 12 ++++++++++++ docker/Dockerfile | 15 +++++++++++++-- docker/build.sh | 12 +++++++----- 3 files changed, 32 insertions(+), 7 deletions(-) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..2e1b785e0 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,12 @@ +# Folders +.git/ +.github/ +changelog/ +doc/ +docker/ +helpers/ + +# Files +.gitignore +.golangci.yml +*.md diff --git a/docker/Dockerfile b/docker/Dockerfile index 3268f987b..dacb02542 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,7 +1,18 @@ -FROM alpine:latest +FROM golang:1.16-alpine AS builder -COPY restic /usr/bin +WORKDIR /go/src/github.com/restic/restic + +# Caching dependencies +COPY go.mod go.sum ./ +RUN go mod download + +COPY . . +RUN go run build.go + +FROM alpine:latest AS restic RUN apk add --update --no-cache ca-certificates fuse openssh-client tzdata +COPY --from=builder /go/src/github.com/restic/restic/restic /usr/bin + ENTRYPOINT ["/usr/bin/restic"] diff --git a/docker/build.sh b/docker/build.sh index 729b837e8..bd4477951 100755 --- a/docker/build.sh +++ b/docker/build.sh @@ -2,10 +2,12 @@ set -e -echo "Build binary using golang docker image" -docker run --rm -ti \ - -v "`pwd`":/go/src/github.com/restic/restic \ - -w /go/src/github.com/restic/restic golang:1.16-alpine go run build.go +export DOCKER_BUILDKIT=${DOCKER_BUILDKIT-1} echo "Build docker image restic/restic:latest" -docker build --rm -t restic/restic:latest -f docker/Dockerfile . +docker build \ + --rm \ + --pull \ + --file docker/Dockerfile \ + --tag restic/restic:latest \ + .