From 4a4cd0ba7b84834791ce2595042487f165f14759 Mon Sep 17 00:00:00 2001
From: Griefed <griefed@griefed.de>
Date: Tue, 22 Jun 2021 21:34:30 +0200
Subject: [PATCH] refactor: Switch ARGs, provide defaults, add aliases.
 Basically, merge the three dockerfiles into one.

---
 Dockerfile | 202 ++++++++++++++++++++++++++++-------------------------
 1 file changed, 108 insertions(+), 94 deletions(-)

diff --git a/Dockerfile b/Dockerfile
index b1542c5..19587c5 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,116 +1,130 @@
-FROM alpine:3.11 as rootfs-stage
+FROM alpine:3.14 as fetcher
+
+# Ubuntu focal architecture
+ARG FOCAL_ARCH="amd64"
+ARG FOCAL_RELEASE_DATE="current"
 
-# environment
-ENV REL=focal
-ENV ARCH=amd64
-# install packages
 RUN \
- apk add --no-cache \
-        bash \
-        curl \
-        tzdata \
-        xz
+  apk add --no-cache \
+    bash \
+    curl \
+    tzdata \
+    xz
 
-# grab base tarball
 RUN \
- mkdir /root-out && \
- curl -o \
-	/rootfs.tar.gz -L \
-	https://partner-images.canonical.com/core/${REL}/current/ubuntu-${REL}-core-cloudimg-${ARCH}-root.tar.gz && \
- tar xf \
-        /rootfs.tar.gz -C \
-        /root-out
+  mkdir /focal-rootfs && \
+  curl -o \
+    /focal-rootfs.tar.gz -L \
+      https://partner-images.canonical.com/core/focal/${FOCAL_RELEASE_DATE}/ubuntu-focal-core-cloudimg-${FOCAL_ARCH}-root.tar.gz && \
+  tar xf \
+    /focal-rootfs.tar.gz -C \
+    /focal-rootfs
 
-# Runtime stage
 FROM scratch
-COPY --from=rootfs-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"
+COPY --from=fetcher /focal-rootfs/ /
+
+ARG BUILD_DATE="PassMeTheDateMate"
+ARG VERSION="ChangeMe"
+LABEL build_version="Git.Griefed.de version:- ${VERSION} Build-date:- ${BUILD_DATE}"
+LABEL maintainer="Griefed <griefed@griefed.de>"
+LABEL description="Original baseimage by Linuxserver.io. Changed to fit the needs of Griefed.de \
+This fork was mainly created because I wanted to gather experience in writing \
+my own baseimage. Linuxserver.io provide top quality images with great complexity, making \
+them perfect for learning."
 
-# add s6 overlay
+# s6, s6 version and s6 architecture
+ARG OVERLAY_ARCH="amd64"
+ARG OVERLAY_VERSION="v2.2.0.3"
 ADD https://github.com/just-containers/s6-overlay/releases/download/${OVERLAY_VERSION}/s6-overlay-${OVERLAY_ARCH}-installer /tmp/
 RUN chmod +x /tmp/s6-overlay-${OVERLAY_ARCH}-installer && /tmp/s6-overlay-${OVERLAY_ARCH}-installer / && rm /tmp/s6-overlay-${OVERLAY_ARCH}-installer
 COPY patch/ /tmp/patch
 
 # set environment variables
 ARG DEBIAN_FRONTEND="noninteractive"
-ENV HOME="/root" \
-LANGUAGE="en_US.UTF-8" \
-LANG="en_US.UTF-8" \
-TERM="xterm"
+ENV HOME="/root"
+ENV LANGUAGE="en_US.UTF-8"
+ENV LANG="en_US.UTF-8"
+ENV TERM="xterm"
 
 # copy sources
 COPY sources.list /etc/apt/
+COPY sources.list.arm /etc/apt
+
+RUN \
+  if [ $OVERLAY_ARCH="amd64" ];then
+    rm /etc/apt/sources.list.arm
+  else
+    rm /etc/apt/sources.list
+  fi
 
 RUN \
- echo "**** Ripped from Ubuntu Docker Logic ****" && \
- set -xe && \
- echo '#!/bin/sh' \
-	> /usr/sbin/policy-rc.d && \
- echo 'exit 101' \
-	>> /usr/sbin/policy-rc.d && \
- chmod +x \
-	/usr/sbin/policy-rc.d && \
- dpkg-divert --local --rename --add /sbin/initctl && \
- cp -a \
-	/usr/sbin/policy-rc.d \
-	/sbin/initctl && \
- sed -i \
-	's/^exit.*/exit 0/' \
-	/sbin/initctl && \
- echo 'force-unsafe-io' \
-	> /etc/dpkg/dpkg.cfg.d/docker-apt-speedup && \
- echo 'DPkg::Post-Invoke { "rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"; };' \
-	> /etc/apt/apt.conf.d/docker-clean && \
- echo 'APT::Update::Post-Invoke { "rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"; };' \
-	>> /etc/apt/apt.conf.d/docker-clean && \
- echo 'Dir::Cache::pkgcache ""; Dir::Cache::srcpkgcache "";' \
-	>> /etc/apt/apt.conf.d/docker-clean && \
- echo 'Acquire::Languages "none";' \
-	> /etc/apt/apt.conf.d/docker-no-languages && \
- echo 'Acquire::GzipIndexes "true"; Acquire::CompressionTypes::Order:: "gz";' \
-	> /etc/apt/apt.conf.d/docker-gzip-indexes && \
- echo 'Apt::AutoRemove::SuggestsImportant "false";' \
-	> /etc/apt/apt.conf.d/docker-autoremove-suggests && \
- mkdir -p /run/systemd && \
- echo 'docker' \
-	> /run/systemd/container && \
- echo "**** install apt-utils and locales ****" && \
- apt-get update && \
- apt-get install -y \
-	apt-utils \
-	locales && \
- echo "**** install packages ****" && \
- apt-get install -y \
-	curl \
-	gnupg \
-	patch \
-	tzdata && \
- echo "**** generate locale ****" && \
- locale-gen en_US.UTF-8 && \
- 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 && \
- mv /usr/bin/with-contenv /usr/bin/with-contenvb && \
- patch -u /etc/s6/init/init-stage2 -i /tmp/patch/etc/s6/init/init-stage2.patch && \
- echo "**** cleanup ****" && \
- apt-get remove -y patch && \
- apt-get autoremove && \
- apt-get clean && \
- rm -rf \
-	/tmp/* \
-	/var/lib/apt/lists/* \
-	/var/tmp/*
+  echo "**** Ripped from Ubuntu Docker Logic ****" && \
+  set -xe && \
+  echo '#!/bin/sh' \
+    > /usr/sbin/policy-rc.d && \
+  echo 'exit 101' \
+    >> /usr/sbin/policy-rc.d && \
+  chmod +x \
+    /usr/sbin/policy-rc.d && \
+  dpkg-divert --local --rename --add /sbin/initctl && \
+  cp -a \
+    /usr/sbin/policy-rc.d \
+    /sbin/initctl && \
+  sed -i \
+    's/^exit.*/exit 0/' \
+    /sbin/initctl && \
+  echo 'force-unsafe-io' \
+    > /etc/dpkg/dpkg.cfg.d/docker-apt-speedup && \
+  echo 'DPkg::Post-Invoke { "rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"; };' \
+    > /etc/apt/apt.conf.d/docker-clean && \
+  echo 'APT::Update::Post-Invoke { "rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"; };' \
+    >> /etc/apt/apt.conf.d/docker-clean && \
+  echo 'Dir::Cache::pkgcache ""; Dir::Cache::srcpkgcache "";' \
+    >> /etc/apt/apt.conf.d/docker-clean && \
+  echo 'Acquire::Languages "none";' \
+    > /etc/apt/apt.conf.d/docker-no-languages && \
+  echo 'Acquire::GzipIndexes "true"; Acquire::CompressionTypes::Order:: "gz";' \
+    > /etc/apt/apt.conf.d/docker-gzip-indexes && \
+  echo 'Apt::AutoRemove::SuggestsImportant "false";' \
+    > /etc/apt/apt.conf.d/docker-autoremove-suggests && \
+  mkdir -p /run/systemd && \
+  echo 'docker' \
+    > /run/systemd/container && \
+  echo "**** Install apt-utils and locales ****" && \
+  apt-get update && \
+  apt-get install -y \
+    apt-utils \
+    locales && \
+  echo "**** Install packages ****" && \
+  apt-get install -y \
+    curl \
+    gnupg \
+    patch \
+    tzdata && \
+  echo "**** Generate locale ****" && \
+  locale-gen en_US.UTF-8 && \
+  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 \
+    /data \
+    /defaults && \
+  mv /usr/bin/with-contenv /usr/bin/with-contenvb && \
+  patch -u /etc/s6/init/init-stage2 -i /tmp/patch/etc/s6/init/init-stage2.patch && \
+  echo "**** Create our bash-aliases ****" && \
+  alias ll="LC_COLLATE=C ls -ahl --group-directories-first --color=auto" && \
+  alias ..="cd .." && \
+  echo "**** Cleanup ****" && \
+  apt-get remove -y patch && \
+  apt-get autoremove && \
+  apt-get clean && \
+  rm -rf \
+    /tmp/* \
+    /var/lib/apt/lists/* \
+    /var/tmp/*
 
 # add local files
 COPY root/ /
-- 
GitLab