2021-09-26 19:03:19 -07:00

123 lines
3.3 KiB
Docker

FROM alpine:3.14 as rootfs-stage
ARG ARCH_VERSION
# install packages
RUN \
apk add --no-cache \
bash \
curl \
jq \
tzdata \
xz
# grab latest rootfs
RUN \
echo "**** grab download URL ****" && \
if [ -z ${ARCH_VERSION+x} ]; then \
ARCH_VERSION=$(curl -sL https://gitlab.archlinux.org/api/v4/projects/10185/releases \
| jq -r '.[0].tag_name' | sed 's/^v//g'); \
fi && \
PACK_ID=$(curl -sL https://gitlab.archlinux.org/api/v4/projects/10185/packages?sort=desc | jq -r '.[] | select(.version == "'${ARCH_VERSION}'") | .id') && \
TAR_ID=$(curl -sL https://gitlab.archlinux.org/api/v4/projects/10185/packages/${PACK_ID}/package_files | jq '.[] | select(.file_name == "base-'${ARCH_VERSION}'.tar.xz") | .id') && \
echo "**** download/extract rootfs ****" && \
curl -o \
/rootfs.tar.xz -L \
https://gitlab.archlinux.org/archlinux/archlinux-docker/-/package_files/${TAR_ID}/download && \
mkdir /root-out && \
tar xf \
/rootfs.tar.xz -C \
/root-out
# pacstrap stage
FROM scratch as pacstrap-stage
COPY --from=rootfs-stage /root-out/ /
COPY patch/ /tmp/patch
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} && \
pacman -r /root-out -Sy --noconfirm \
bash \
coreutils \
findutils \
gawk \
grep \
gzip \
less \
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 /tmp/patch/init-stage2.patch /root-out/ && \
rm /root-out/var/lib/pacman/sync/*
# runtime stage
FROM scratch
COPY --from=pacstrap-stage /root-out/ /
ARG BUILD_DATE
ARG VERSION
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
LABEL maintainer="TheLamer"
# set version for s6 overlay
ARG OVERLAY_VERSION="v2.2.0.3"
ARG OVERLAY_ARCH="amd64"
# environment variables
ENV PS1="$(whoami)@$(hostname):$(pwd)\\$ " \
HOME="/root" \
TERM="xterm"
# add s6 overlay
ADD https://github.com/just-containers/s6-overlay/releases/download/${OVERLAY_VERSION}/s6-overlay-${OVERLAY_ARCH}-installer /tmp/
RUN \
echo "**** create abc user and make our folders ****" && \
groupadd -g 1000 users && \
useradd -u 911 -U -d /config -s /bin/false abc && \
usermod -G users abc && \
mkdir -p \
/app \
/config \
/defaults && \
echo "**** install s6 ****" && \
chmod +x /tmp/s6-overlay-${OVERLAY_ARCH}-installer && \
/tmp/s6-overlay-${OVERLAY_ARCH}-installer / && \
rm /tmp/s6-overlay-${OVERLAY_ARCH}-installer && \
mv /usr/bin/with-contenv /usr/bin/with-contenvb && \
echo "**** configure pacman ****" && \
locale-gen && \
pacman-key --init && \
pacman-key --populate archlinux && \
echo "**** patch files ****" && \
pacman -Sy --noconfirm \
patch && \
patch -u /etc/s6/init/init-stage2 -i /init-stage2.patch && \
echo "**** configure locale ****" && \
echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && \
locale-gen && \
echo "**** cleanup ****" && \
pacman -Rsn --noconfirm \
patch && \
rm -rf \
/init-stage2.patch \
/tmp/* \
/var/cache/pacman/pkg/* \
/var/lib/pacman/sync/*
# add local files
COPY root/ /
ENTRYPOINT ["/init"]