mirror of
https://github.com/linuxkit/linuxkit.git
synced 2026-04-05 21:41:48 +00:00
Alpine is the base docker image for the LinuxKit, but currently it only supports amd64 architecture. This patch is try to unify the alpine tool docker image build process order to suport other architectures, such as AArch64, by using '--build-arg' to override the alpine base image specified by 'FROM' in the Dockerfile. Also this patch splits the standalone packages into 2 parts: one is common for all archs, another is arch-specific. Signed-off-by: Dennis Chen <dennis.chen@arm.com>
64 lines
2.2 KiB
Docker
64 lines
2.2 KiB
Docker
ARG BASE=alpine:3.6
|
|
FROM $BASE AS mirror
|
|
|
|
# update base image
|
|
RUN apk update && apk upgrade -a
|
|
|
|
# Copy Dockerfile so we can include it in the hash
|
|
COPY Dockerfile /Dockerfile
|
|
COPY packages* /tmp/
|
|
|
|
# mirror packages
|
|
RUN cat /tmp/packages.$(uname -m) >> /tmp/packages && \
|
|
mkdir -p /mirror/$(uname -m) && \
|
|
apk fetch --recursive -o /mirror/$(uname -m) $(apk info; cat /tmp/packages)
|
|
|
|
# add the tools for WireGuard, since the kernel module is now included, but from edge/testing
|
|
RUN apk fetch --recursive -o /mirror/$(uname -m) -X http://dl-cdn.alpinelinux.org/alpine/edge/testing -U wireguard-tools
|
|
|
|
# install abuild for signing
|
|
RUN apk add --no-cache abuild
|
|
|
|
# install a new key into /etc/apk/keys
|
|
RUN abuild-keygen -a -i -n
|
|
|
|
# index the new repo
|
|
RUN apk index --rewrite-arch $(uname -m) -o /mirror/$(uname -m)/APKINDEX.unsigned.tar.gz /mirror/$(uname -m)/*.apk
|
|
|
|
# sign the index
|
|
RUN cp /mirror/$(uname -m)/APKINDEX.unsigned.tar.gz /mirror/$(uname -m)/APKINDEX.tar.gz
|
|
RUN abuild-sign /mirror/$(uname -m)/APKINDEX.tar.gz
|
|
|
|
# fetch OVMF for qemu EFI boot (this is not added as a package)
|
|
RUN mkdir -p /usr/share/ovmf && \
|
|
if [ $(uname -m) = x86_64 ]; then \
|
|
apk add -X http://dl-cdn.alpinelinux.org/alpine/edge/community ovmf; \
|
|
fi
|
|
|
|
# set this as our repo but keep a copy of the upstream for downstream use
|
|
RUN mv /etc/apk/repositories /etc/apk/repositories.upstream && echo "/mirror" > /etc/apk/repositories && apk update
|
|
|
|
# add Go validation tools
|
|
COPY go-compile.sh /go/bin/
|
|
RUN apk add --no-cache git go musl-dev
|
|
ENV GOPATH=/go PATH=$PATH:/go/bin
|
|
RUN go get -u github.com/golang/lint/golint
|
|
RUN go get -u github.com/gordonklaus/ineffassign
|
|
RUN go get -u github.com/LK4D4/vndr
|
|
|
|
FROM $BASE
|
|
|
|
COPY --from=mirror /etc/apk/repositories /etc/apk/repositories
|
|
COPY --from=mirror /etc/apk/repositories.upstream /etc/apk/repositories.upstream
|
|
COPY --from=mirror /etc/apk/keys /etc/apk/keys/
|
|
COPY --from=mirror /mirror /mirror/
|
|
COPY --from=mirror /go/bin /go/bin/
|
|
COPY --from=mirror /usr/share/ovmf/ /usr/share/ovmf/
|
|
COPY --from=mirror /Dockerfile /Dockerfile
|
|
|
|
RUN apk update && apk upgrade -a
|
|
|
|
# v1.0.0-alpha1 plus https://github.com/containerd/containerd/pull/1141
|
|
ENV CONTAINERD_REPO=https://github.com/ijc/containerd.git
|
|
ENV CONTAINERD_COMMIT=d42cb88ba2b08d2ca6c8c017d629b394bf1dd08c
|