mirror of
https://github.com/linuxkit/linuxkit.git
synced 2026-02-22 05:02:26 +00:00
This removes more shell scripts to improve maintainability. This now also works correctly in userspace, so it can be used for running LinuxKit images in Docker and other such use cases. It is a literal conversion of the shell scripts with a few small tweaks. Signed-off-by: Justin Cormack <justin.cormack@docker.com>
39 lines
1.3 KiB
Docker
39 lines
1.3 KiB
Docker
FROM linuxkit/alpine:1e67b8fdba849ed2f7e8537c13b7f280639623d6 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
|
|
RUN go-compile.sh /go/src/cmd/rc.init
|
|
# this makes sure that the multi stage build copies as a symlink
|
|
RUN mkdir /tmp/bin && cd /tmp/bin/ && cp /go/bin/rc.init . && ln -s rc.init rc.shutdown
|
|
|
|
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:1e67b8fdba849ed2f7e8537c13b7f280639623d6 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
|
|
|
|
# Add /etc/ssl/certs so it can be bind-mounted into metadata package
|
|
RUN mkdir -p /out/etc/ssl/certs
|
|
|
|
# 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 /tmp/bin /bin/
|
|
COPY --from=build /go/bin/service /usr/bin/
|
|
COPY --from=build usermode-helper /sbin/
|
|
COPY --from=mirror /out/ /
|
|
COPY etc etc/
|