diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 658ee76..e7779af 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -28,7 +28,7 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v1 - name: Login to DockerHub - uses: docker/login-action@v1 + uses: docker/login-action@v1 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} @@ -50,7 +50,7 @@ jobs: - name: Build and Push uses: docker/build-push-action@v2 with: - platforms: linux/arm64 + platforms: linux/amd64,linux/arm64 push: true tags: ${{ env.TAGS }} build-args: | diff --git a/Dockerfile b/Dockerfile index 8f1a919..34bdbae 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,19 +1,29 @@ ARG PACKAGE_GROUP=base FROM alpine:3.15 AS bootstrapper -COPY pacman /pacman +ARG TARGETARCH +COPY files /files RUN \ - apk add arch-install-scripts pacman-makepkg && \ - cat /pacman/repos >> /etc/pacman.conf && \ - cp -r /pacman/keyrings /usr/share/pacman/ && \ + apk add arch-install-scripts pacman-makepkg curl && \ + cat /files/repos-$TARGETARCH >> /etc/pacman.conf && \ + if [[ "$TARGETARCH" == "amd64" ]]; then \ + apk add zstd && \ + mkdir /tmp/archlinux-keyring && \ + curl -L https://archlinux.org/packages/core/any/archlinux-keyring/download | unzstd | tar -C /tmp/archlinux-keyring -xv && \ + mv /tmp/archlinux-keyring/usr/share/pacman/keyrings /usr/share/pacman/; \ + elif [[ "$TARGETARCH" == "arm64" ]]; then \ + curl -L https://github.com/archlinuxarm/archlinuxarm-keyring/archive/refs/heads/master.zip | unzip -d /tmp/archlinuxarm-keyring - && \ + mkdir /usr/share/pacman/keyrings && \ + mv /tmp/archlinuxarm-keyring/*/archlinuxarm* /usr/share/pacman/keyrings/; \ + fi && \ pacman-key --init && \ pacman-key --populate && \ mkdir /rootfs && \ - /pacman/pacstrap-docker /rootfs $PACKAGE_GROUP && \ + /files/pacstrap-docker /rootfs $PACKAGE_GROUP && \ echo "en_US.UTF-8 UTF-8" > /rootfs/etc/locale.gen && \ echo "LANG=en_US.UTF-8" > /rootfs/etc/locale.conf && \ chroot /rootfs locale-gen && \ - rm -rf /rootfs/var/lib/pacman/sync/* /root/pacman + rm -rf /rootfs/var/lib/pacman/sync/* /rootfs/files FROM scratch COPY --from=bootstrapper /rootfs/ / diff --git a/README.md b/README.md index 41bf31a..605a3e2 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ -# Docker Image for Arch Linux ARM +# Arch Linux Docker Image (Multiarch) [![Build and Push](https://github.com/Menci/docker-archlinuxarm/actions/workflows/build.yaml/badge.svg)](https://github.com/Menci/docker-archlinuxarm/actions/workflows/build.yaml) -This is the Docker image for Arch Linux ARM. All images are built on GitHub Actions automatically. +This is the Docker image for Arch Linux ARM but for compatibility AMD64 build is also included. All images are built on GitHub Actions automatically. -Just just like the official Arch Linux amd64 image, it has two tags: +Just just like the official Arch Linux AMD64 image, it has two tags: * `base` (default): installed only the package group `base`. * `base-devel`: installed the package group `base-devel`. diff --git a/pacman/pacstrap-docker b/files/pacstrap-docker similarity index 100% rename from pacman/pacstrap-docker rename to files/pacstrap-docker diff --git a/files/repos-amd64 b/files/repos-amd64 new file mode 100644 index 0000000..13ac9d5 --- /dev/null +++ b/files/repos-amd64 @@ -0,0 +1,8 @@ +[core] +Server = http://mirror.rackspace.com/archlinux/$repo/os/$arch + +[extra] +Server = http://mirror.rackspace.com/archlinux/$repo/os/$arch + +[community] +Server = http://mirror.rackspace.com/archlinux/$repo/os/$arch diff --git a/pacman/repos b/files/repos-arm64 similarity index 100% rename from pacman/repos rename to files/repos-arm64 diff --git a/pacman/keyrings/archlinuxarm-revoked b/pacman/keyrings/archlinuxarm-revoked deleted file mode 100644 index e69de29..0000000 diff --git a/pacman/keyrings/archlinuxarm-trusted b/pacman/keyrings/archlinuxarm-trusted deleted file mode 100644 index 3dd9bf4..0000000 --- a/pacman/keyrings/archlinuxarm-trusted +++ /dev/null @@ -1,3 +0,0 @@ -02922214DE8981D14DC2ACABBC704E86B823CD25:4: -9D22B7BB678DC056B1F7723CB55C5315DCD9EE1A:4: -69DD6C8FD314223E14362848BF7EEF7A9C6B5765:4: diff --git a/pacman/keyrings/archlinuxarm.gpg b/pacman/keyrings/archlinuxarm.gpg deleted file mode 100644 index 6b352c0..0000000 --- a/pacman/keyrings/archlinuxarm.gpg +++ /dev/null @@ -1,238 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -=5FlG ------END PGP PUBLIC KEY BLOCK----- ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -=X/kt ------END PGP PUBLIC KEY BLOCK----- ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -=7TM/ ------END PGP PUBLIC KEY BLOCK----- ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -8+A0kBiaAmcY01U/upYXeHs= -=YwSO ------END PGP PUBLIC KEY BLOCK-----