Merge pull request #2244 from arm64b/tool-alpine-refactor

tools: multi-arch support for the base alpine image
This commit is contained in:
Rolf Neugebauer 2017-07-24 12:05:17 +01:00 committed by GitHub
commit 53bd58edc8
7 changed files with 271 additions and 21 deletions

View File

@ -1,14 +1,16 @@
FROM alpine:3.6 AS mirror
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/
COPY packages* /tmp/
# mirror packages
RUN mkdir -p /mirror/$(uname -m) && \
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
@ -28,7 +30,10 @@ RUN cp /mirror/$(uname -m)/APKINDEX.unsigned.tar.gz /mirror/$(uname -m)/APKINDEX
RUN abuild-sign /mirror/$(uname -m)/APKINDEX.tar.gz
# fetch OVMF for qemu EFI boot (this is not added as a package)
RUN apk add -X http://dl-cdn.alpinelinux.org/alpine/edge/community ovmf
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
@ -41,14 +46,14 @@ 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 alpine:3.6
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/bios.bin /usr/share/ovmf/bios.bin
COPY --from=mirror /usr/share/ovmf/ /usr/share/ovmf/
COPY --from=mirror /Dockerfile /Dockerfile
RUN apk update && apk upgrade -a

View File

@ -2,24 +2,37 @@
ORG?=linuxkit
IMAGE=alpine
DOCKER_CONTENT_VAR=1
PKG_DEPS=packages
ifeq ($(shell uname -m), x86_64)
BASE=alpine:3.6
PKG_DEPS += packages.x86_64
endif
ifeq ($(shell uname -m), aarch64)
BASE=arm64v8/alpine:3.6
PKG_DEPS += packages.aarch64
DOCKER_CONTENT_VAR=0
endif
default: push
show-tag:
@sed -n -e '1s/# \(.*\/.*:[0-9a-f]\{40\}\)/\1/p;q' versions
@sed -n -e '1s/# \(.*\/.*:[0-9a-f]\{40\}\)/\1/p;q' versions.$(shell uname -m)
hash: Dockerfile Makefile packages
DOCKER_CONTENT_TRUST=1 docker pull $(BASE)
docker build --no-cache -t $(IMAGE):build .
hash: Dockerfile Makefile $(PKG_DEPS)
DOCKER_CONTENT_TRUST=$(DOCKER_CONTENT_VAR) docker pull $(BASE)
docker build --no-cache --build-arg BASE=$(BASE) -t $(IMAGE):build .
docker run --rm $(IMAGE):build sh -c 'echo Dockerfile /lib/apk/db/installed $$(find /mirror -name '*.apk' -type f) $$(find /go/bin -type f) | xargs cat | sha1sum' | sed 's/ .*//' > $@
push: hash
DOCKER_CONTENT_TRUST=1 docker pull $(ORG)/$(IMAGE):$(shell cat hash) || \
DOCKER_CONTENT_TRUST=$(DOCKER_CONTENT_VAR) docker pull $(ORG)/$(IMAGE):$(shell cat hash) || \
(docker tag $(IMAGE):build $(ORG)/$(IMAGE):$(shell cat hash) && \
DOCKER_CONTENT_TRUST=1 docker push $(ORG)/$(IMAGE):$(shell cat hash))
echo "# $(ORG)/$(IMAGE):$(shell cat hash)" > versions
docker run --rm $(IMAGE):build find /mirror -name '*.apk' -exec basename '{}' .apk \; | sort | (echo '# automatically generated list of installed packages'; cat -) >> versions
DOCKER_CONTENT_TRUST=$(DOCKER_CONTENT_VAR) docker push $(ORG)/$(IMAGE):$(shell cat hash))
echo "# $(ORG)/$(IMAGE):$(shell cat hash)" > versions.$(shell uname -m)
docker run --rm $(IMAGE):build find /mirror -name '*.apk' -exec basename '{}' .apk \; | sort | (echo '# automatically generated list of installed packages'; cat -) >> versions.$(shell uname -m)
docker rmi $(IMAGE):build
rm -f hash

View File

@ -61,7 +61,6 @@ openntpd
openrc
openssh-server
openssl-dev
open-vm-tools
patch
python3
qemu-aarch64
@ -77,7 +76,6 @@ slang-dev
squashfs-tools
strace
swig
syslinux
tar
tcpdump
tini

View File

@ -0,0 +1 @@
qemu-system-aarch64

View File

@ -0,0 +1,2 @@
open-vm-tools
syslinux

View File

@ -0,0 +1,231 @@
# linuxkit/alpine:07d75275bc91757f2a03b3096ddfe6d442f66ab1
# automatically generated list of installed packages
abuild-3.0.0_rc2-r8
alpine-baselayout-3.0.4-r0
alpine-keys-2.1-r1
alsa-lib-1.1.3-r0
apk-tools-2.7.2-r0
argp-standalone-1.3-r2
attr-2.4.47-r6
autoconf-2.69-r0
automake-1.15-r0
bash-4.3.48-r1
bc-1.06.95-r2
binutils-2.28-r2
binutils-dev-2.28-r2
binutils-libs-2.28-r2
bison-3.0.4-r0
bsd-compat-headers-0.7.1-r0
btrfs-progs-4.10.2-r0
btrfs-progs-dev-4.10.2-r0
btrfs-progs-libs-4.10.2-r0
build-base-0.5-r0
busybox-1.26.2-r5
busybox-initscripts-3.1-r1
bzip2-1.0.6-r5
ca-certificates-20161130-r2
cdrkit-1.1.11-r2
celt051-0.5.1.3-r0
cmake-3.8.1-r0
cryptsetup-1.7.5-r0
cryptsetup-libs-1.7.5-r0
curl-7.54.0-r0
db-5.3.28-r0
device-mapper-libs-2.02.168-r3
dhcpcd-6.11.5-r1
diffutils-3.5-r0
dosfstools-4.1-r1
e2fsprogs-1.43.4-r0
e2fsprogs-extra-1.43.4-r0
e2fsprogs-libs-1.43.4-r0
elfutils-dev-0.168-r1
elfutils-libelf-0.168-r1
expat-2.2.0-r1
expect-5.45-r3
fakeroot-1.21-r1
file-5.30-r0
findmnt-2.28.2-r2
flex-2.6.4-r1
fortify-headers-0.8-r0
g++-6.3.0-r4
gc-7.6.0-r1
gcc-6.3.0-r4
gdbm-1.12-r0
gettext-0.19.8.1-r1
gettext-asprintf-0.19.8.1-r1
gettext-dev-0.19.8.1-r1
gettext-libs-0.19.8.1-r1
git-2.13.0-r0
glib-2.52.1-r0
gmp-6.1.2-r0
gmp-dev-6.1.2-r0
gnupg-2.1.20-r0
gnutls-3.5.13-r0
go-1.8.3-r0
guile-2.0.13-r0
guile-libs-2.0.13-r0
gummiboot-48.1-r0
hvtools-4.4.15-r0
installkernel-3.5-r0
iperf3-3.1.7-r0
iproute2-4.10.0-r1
iptables-1.6.1-r0
isl-0.17.1-r0
jq-1.5-r3
jsoncpp-1.8.0-r0
keyutils-libs-1.5.9-r1
kmod-23-r1
krb5-conf-1.0-r1
krb5-libs-1.14.3-r2
libacl-2.2.52-r3
libaio-0.3.110-r0
libarchive-3.3.1-r1
libarchive-tools-3.3.1-r1
libassuan-2.4.3-r0
libatomic-6.3.0-r4
libattr-2.4.47-r6
libblkid-2.28.2-r2
libburn-1.4.6-r0
libbz2-1.0.6-r5
libcap-2.25-r1
libcap-ng-0.7.8-r0
libcap-ng-dev-0.7.8-r0
libc-dev-0.7.1-r0
libcom_err-1.43.4-r0
libcrypto1.0-1.0.2k-r0
libcurl-7.54.0-r0
libc-utils-0.7.1-r0
libdrm-2.4.80-r0
libedit-20170329.3.1-r2
libelf-0.8.13-r2
libelf-dev-0.8.13-r2
libepoxy-1.4.1-r0
libexecinfo-1.1-r0
libexecinfo-dev-1.1-r0
libfdisk-2.28.2-r2
libffi-3.2.1-r3
libgcc-6.3.0-r4
libgcrypt-1.7.8-r0
libgmpxx-6.1.2-r0
libgomp-6.3.0-r4
libgpg-error-1.27-r0
libintl-0.19.8.1-r1
libisoburn-1.4.6-r0
libisofs-1.4.6-r0
libjpeg-turbo-1.5.1-r0
libksba-1.3.4-r0
libldap-2.4.44-r5
libltdl-2.4.6-r1
libmagic-5.30-r0
libmnl-1.0.4-r0
libmount-2.28.2-r2
libnfs-1.11.0-r0
libnftnl-libs-1.0.7-r0
libogg-1.3.2-r1
libpcap-1.8.1-r0
libpng-1.6.29-r1
libressl-2.5.4-r0
libressl2.5-libcrypto-2.5.4-r0
libressl2.5-libssl-2.5.4-r0
libressl2.5-libtls-2.5.4-r0
libressl-dev-2.5.4-r0
libsasl-2.1.26-r10
libseccomp-2.3.2-r0
libseccomp-dev-2.3.2-r0
libsmartcols-2.28.2-r2
libssh2-1.8.0-r1
libssl1.0-1.0.2k-r0
libstdc++-6.3.0-r4
libtasn1-4.10-r1
libtirpc-1.0.1-r1
libtool-2.4.6-r1
libunistring-0.9.7-r0
libunwind-1.2-r2
libunwind-dev-1.2-r2
libusb-1.0.21-r0
libuuid-2.28.2-r2
libuv-1.11.0-r1
libverto-0.2.5-r2
libxml2-2.9.4-r4
linux-headers-4.4.6-r2
lua5.2-libs-5.2.4-r2
lz4-libs-1.7.5-r0
lzip-1.19-r0
lzo-2.10-r0
m4-1.4.18-r0
make-4.2.1-r0
mesa-gbm-17.0.3-r1
mpc1-1.0.3-r0
mpfr3-3.1.5-r0
mtools-4.0.18-r1
musl-1.1.16-r13
musl-dev-1.1.16-r13
musl-utils-1.1.16-r13
ncurses-dev-6.0-r7
ncurses-libs-6.0-r7
ncurses-terminfo-6.0-r7
ncurses-terminfo-base-6.0-r7
nettle-3.3-r0
npth-1.2-r0
oniguruma-6.2.0-r0
openntpd-6.0_p1-r3
openrc-0.24.1-r2
openssh-keygen-7.5_p1-r1
openssh-server-7.5_p1-r1
openssl-dev-1.0.2k-r0
opus-1.1.4-r0
p11-kit-0.23.2-r1
patch-2.7.5-r1
pax-utils-1.2.2-r0
pcre-8.40-r2
perl-5.24.1-r2
pinentry-1.0.0-r0
pixman-0.34.0-r0
pkgconf-1.3.7-r0
popt-1.16-r6
python3-3.6.1-r2
qemu-2.8.1-r1
qemu-aarch64-2.8.1-r1
qemu-arm-2.8.1-r1
qemu-guest-agent-2.8.1-r1
qemu-img-2.8.1-r1
qemu-ppc64le-2.8.1-r1
qemu-system-aarch64-2.8.1-r1
qemu-system-arm-2.8.1-r1
qemu-system-x86_64-2.8.1-r1
readline-6.3.008-r5
scanelf-1.2.2-r0
sed-4.4-r0
sfdisk-2.28.2-r2
slang-2.3.1-r0
slang-dev-2.3.1-r0
snappy-1.1.4-r1
spice-server-0.13.3-r1
sqlite-libs-3.18.0-r0
squashfs-tools-4.3-r3
strace-4.16-r1
sudo-1.8.19_p2-r0
swig-3.0.10-r0
tar-1.29-r1
tcl-8.6.6-r0
tcpdump-4.9.0-r1
tini-0.14.0-r0
tzdata-2017a-r0
usbredir-0.7-r2
util-linux-2.28.2-r2
util-linux-dev-2.28.2-r2
vde2-libs-2.3.2-r7
vim-8.0.0595-r0
wayland-1.13.0-r0
wireguard-tools-0.0.20170629-r0
xfsprogs-4.5.0-r0
xfsprogs-extra-4.5.0-r0
xfsprogs-libs-4.5.0-r0
xorriso-1.4.6-r0
xz-5.2.3-r0
xz-dev-5.2.3-r0
xz-libs-5.2.3-r0
zfs-0.6.5.9-r1
zfs-libs-0.6.5.9-r1
zlib-1.2.11-r0
zlib-dev-1.2.11-r0

View File

@ -1,4 +1,4 @@
# linuxkit/alpine:43c139f87122e94af5fac9a9d1d96f0292ca1c0b
# linuxkit/alpine:c05b16339df6d4638bc048aa12148b5803635b66
# automatically generated list of installed packages
abuild-3.0.0_rc2-r8
alpine-baselayout-3.0.4-r0
@ -91,14 +91,14 @@ libattr-2.4.47-r6
libblkid-2.28.2-r2
libburn-1.4.6-r0
libbz2-1.0.6-r5
libc-dev-0.7.1-r0
libc-utils-0.7.1-r0
libcap-2.25-r1
libcap-ng-0.7.8-r0
libcap-ng-dev-0.7.8-r0
libc-dev-0.7.1-r0
libcom_err-1.43.4-r0
libcrypto1.0-1.0.2k-r0
libcurl-7.54.0-r0
libc-utils-0.7.1-r0
libdrm-2.4.80-r0
libedit-20170329.3.1-r2
libelf-0.8.13-r2
@ -131,10 +131,10 @@ libpcap-1.8.1-r0
libpciaccess-0.13.4-r1
libpng-1.6.29-r1
libressl-2.5.4-r0
libressl-dev-2.5.4-r0
libressl2.5-libcrypto-2.5.4-r0
libressl2.5-libssl-2.5.4-r0
libressl2.5-libtls-2.5.4-r0
libressl-dev-2.5.4-r0
libsasl-2.1.26-r10
libseccomp-2.3.2-r0
libseccomp-dev-2.3.2-r0
@ -175,12 +175,12 @@ ncurses-terminfo-base-6.0-r7
nettle-3.3-r0
npth-1.2-r0
oniguruma-6.2.0-r0
open-vm-tools-10.1.0-r7
openntpd-6.0_p1-r3
openrc-0.24.1-r2
openssh-keygen-7.5_p1-r1
openssh-server-7.5_p1-r1
openssl-dev-1.0.2k-r0
open-vm-tools-10.1.0-r7
opus-1.1.4-r0
p11-kit-0.23.2-r1
patch-2.7.5-r1