FROM linuxkit/alpine:0fd732eb9e99c4db0953ae8de23d95de340ab847 AS build RUN apk add --no-cache --initdb alpine-baselayout make gcc musl-dev git linux-headers ADD usermode-helper.c ./ RUN LDFLAGS=-static CFLAGS=-Werror make usermode-helper RUN apk add --no-cache go musl-dev ENV GOPATH=/go PATH=$PATH:/go/bin COPY cmd /go/src/cmd RUN go-compile.sh /go/src/cmd/init # checkout containerd for vendoring ENV GOPATH=/go PATH=$PATH:/go/bin # CONTAINERD_REPO and CONTAINERD_COMMIT are defined in linuxkit/alpine RUN mkdir -p $GOPATH/src/github.com/containerd && \ cd $GOPATH/src/github.com/containerd && \ git clone $CONTAINERD_REPO WORKDIR $GOPATH/src/github.com/containerd/containerd RUN git checkout $CONTAINERD_COMMIT RUN cd /go/src/cmd/service && ./skanky-vendor.sh $GOPATH/src/github.com/containerd/containerd RUN go-compile.sh /go/src/cmd/service FROM linuxkit/alpine:6ed3b299f5243acb6459b4993549c5045e4ad7f4 AS mirror RUN mkdir -p /out/etc/apk && cp -r /etc/apk/* /out/etc/apk/ RUN apk add --no-cache --initdb -p /out alpine-baselayout busybox musl # Remove apk residuals. We have a read-only rootfs, so apk is of no use. RUN rm -rf /out/etc/apk /out/lib/apk /out/var/cache FROM scratch ENTRYPOINT [] CMD [] WORKDIR / COPY --from=build /go/bin/init / COPY --from=build /go/bin/service /usr/bin/ COPY --from=build usermode-helper /sbin/ COPY --from=mirror /out/ / COPY etc etc/ COPY bin bin/