# syntax=docker/dockerfile:1 FROM alpine:3 AS rootfs-stage # install packages RUN \ apk add --no-cache \ bash \ curl \ jq \ tzdata \ xz # grab latest rootfs RUN \ echo "**** download/extract rootfs ****" && \ curl -o \ /rootfs.tar.xz -L \ http://os.archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz && \ mkdir /root-out && \ tar xf \ /rootfs.tar.xz -C \ /root-out # pacstrap stage FROM scratch AS pacstrap-stage COPY --from=rootfs-stage /root-out/ / RUN \ mkdir -m 0755 -p \ /root-out/var/{cache/pacman/pkg,lib/pacman,log} \ /root-out/{dev,run,etc} && \ mkdir -m 1777 -p \ /root-out/tmp && \ mkdir -m 0555 -p \ /root-out/{sys,proc} && \ sed -i 's/DownloadUser = alpm//g' /etc/pacman.conf && \ pacman-key --init && \ pacman-key --populate archlinuxarm && \ pacman -r /root-out -Sy --noconfirm \ archlinuxarm-keyring \ bash \ busybox \ catatonit \ coreutils \ curl \ findutils \ gawk \ grep \ gzip \ jq \ less \ netcat \ pacman \ procps-ng \ sed \ shadow \ tar \ tzdata \ util-linux \ which && \ cp -a /etc/pacman.conf /root-out/etc/pacman.conf && \ cp -a /etc/pacman.d/mirrorlist /root-out/etc/pacman.d/mirrorlist && \ cp -a /etc/pacman.d/gnupg /root-out/etc/pacman.d/gnupg && \ rm /root-out/var/lib/pacman/sync/* # set version for s6 overlay ARG S6_OVERLAY_VERSION="3.2.1.0" ARG S6_OVERLAY_ARCH="aarch64" # add s6 overlay ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-noarch.tar.xz /tmp RUN tar -C /root-out -Jxpf /tmp/s6-overlay-noarch.tar.xz ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-${S6_OVERLAY_ARCH}.tar.xz /tmp RUN tar -C /root-out -Jxpf /tmp/s6-overlay-${S6_OVERLAY_ARCH}.tar.xz # add s6 optional symlinks ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-symlinks-noarch.tar.xz /tmp RUN tar -C /root-out -Jxpf /tmp/s6-overlay-symlinks-noarch.tar.xz && unlink /root-out/usr/bin/with-contenv ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-symlinks-arch.tar.xz /tmp RUN tar -C /root-out -Jxpf /tmp/s6-overlay-symlinks-arch.tar.xz # runtime stage FROM scratch COPY --from=pacstrap-stage /root-out/ / ARG BUILD_DATE ARG VERSION ARG MODS_VERSION="v3" ARG PKG_INST_VERSION="v1" ARG LSIOWN_VERSION="v1" ARG WITHCONTENV_VERSION="v1" LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}" LABEL maintainer="TheLamer" ADD --chmod=744 "https://raw.githubusercontent.com/linuxserver/docker-mods/mod-scripts/docker-mods.${MODS_VERSION}" "/docker-mods" ADD --chmod=744 "https://raw.githubusercontent.com/linuxserver/docker-mods/mod-scripts/package-install.${PKG_INST_VERSION}" "/etc/s6-overlay/s6-rc.d/init-mods-package-install/run" ADD --chmod=744 "https://raw.githubusercontent.com/linuxserver/docker-mods/mod-scripts/lsiown.${LSIOWN_VERSION}" "/usr/bin/lsiown" ADD --chmod=755 "https://raw.githubusercontent.com/linuxserver/docker-mods/mod-scripts/with-contenv.${WITHCONTENV_VERSION}" "/usr/bin/with-contenv" # environment variables ENV PS1="$(whoami)@$(hostname):$(pwd)\\$ " \ HOME="/root" \ TERM="xterm" \ S6_CMD_WAIT_FOR_SERVICES_MAXTIME="0" \ S6_VERBOSITY=1 \ S6_STAGE2_HOOK=/docker-mods \ VIRTUAL_ENV=/lsiopy \ PATH="/lsiopy/bin:$PATH" RUN \ echo "**** create abc user and make our folders ****" && \ useradd -u 911 -U -d /config -s /bin/false abc && \ usermod -G users abc && \ mkdir -p \ /app \ /config \ /defaults \ /lsiopy && \ echo "**** configure pacman ****" && \ locale-gen && \ echo "**** configure locale ****" && \ echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && \ locale-gen && \ echo "**** cleanup ****" && \ chmod 755 \ /etc \ /usr \ /usr/bin && \ rm -rf \ /tmp/* \ /var/cache/pacman/pkg/* \ /var/lib/pacman/sync/* # add local files COPY root/ / ENTRYPOINT ["/init"]