diff --git a/Dockerfile b/Dockerfile index df9d5021..dcb93e87 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,16 +1,37 @@ +############################################################ +# builder # +# -> golang image used solely for building the k3d binary # +# -> built executable can then be copied into other stages # +############################################################ FROM golang:1.16 as builder ARG GIT_TAG_OVERRIDE WORKDIR /app COPY . . RUN make build -e GIT_TAG_OVERRIDE=${GIT_TAG_OVERRIDE} && bin/k3d version +####################################################### +# dind # +# -> k3d + some tools in a docker-in-docker container # +# -> used e.g. in our CI pipelines for testing # +####################################################### FROM docker:20.10-dind as dind -RUN apk update && apk add bash curl sudo jq yq git make netcat-openbsd -RUN curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl && \ - chmod +x ./kubectl && \ - mv ./kubectl /usr/local/bin/kubectl + +# install some basic packages needed for testing, etc. +RUN apk update && apk add bash curl sudo jq git make netcat-openbsd + +# install kubectl to interact with the k3d cluster +RUN curl -L https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl -o /usr/local/bin/kubectl && \ + chmod +x /usr/local/bin/kubectl + +# install yq (yaml processor) from source, as the busybox yq had some issues +RUN curl -L https://github.com/mikefarah/yq/releases/download/v4.9.6/yq_linux_amd64 -o /usr/bin/yq &&\ + chmod +x /usr/bin/yq COPY --from=builder /app/bin/k3d /bin/k3d +######################################### +# binary-only # +# -> only the k3d binary.. nothing else # +######################################### FROM scratch as binary-only COPY --from=builder /app/bin/k3d /bin/k3d ENTRYPOINT ["/bin/k3d"] \ No newline at end of file