From 8784c24a6947752b8882536da16727eedb7942ee Mon Sep 17 00:00:00 2001 From: fithwum Date: Sun, 6 Jul 2025 07:51:22 -0700 Subject: [PATCH] commit --- Dockerfile | 21 +++++++++++++++ base-image-script/alpine-image_pt1.sh | 38 +++++++++++++++++++++++++++ base-image-script/alpine-image_pt2.sh | 17 ++++++++++++ base-image-script/alpine-image_pt3.sh | 30 +++++++++++++++++++++ 4 files changed, 106 insertions(+) create mode 100644 Dockerfile create mode 100644 base-image-script/alpine-image_pt1.sh create mode 100644 base-image-script/alpine-image_pt2.sh create mode 100644 base-image-script/alpine-image_pt3.sh diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..997e8d3 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,21 @@ +FROM alpine:latest + +ARG VERSION +ENV DEBIAN_FRONTEND=noninteractive +WORKDIR /builder + +RUN apt-get update && apt-get install -y \ + debootstrap wget curl bash ftp-upload dirmngr locales sudo git \ + && apt-get clean + +# Setup locale +RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && \ + locale-gen && \ + update-locale LANG=en_US.UTF-8 + +COPY base-image-script/ base-image-script/ + +RUN chmod +x base-image-script/*.sh + +# Default command overridden by workflow +CMD ["bash"] diff --git a/base-image-script/alpine-image_pt1.sh b/base-image-script/alpine-image_pt1.sh new file mode 100644 index 0000000..30ef928 --- /dev/null +++ b/base-image-script/alpine-image_pt1.sh @@ -0,0 +1,38 @@ +#!/bin/bash +# Copyright (c) 2025 fithwum +# All rights reserved +set -e + +# Alpine version +ALPINE_VERSION="v3.20" +ROOTFS_DIR="alpine-rootfs" +OUTPUT_TAR="alpine-base.tar.gz" +PACKAGES="bash curl ca-certificates nano" + +echo "[INFO] Downloading alpine-make-rootfs if needed..." +if [ ! -f ./alpine-make-rootfs ]; then + wget https://raw.githubusercontent.com/alpinelinux/alpine-make-rootfs/master/alpine-make-rootfs + chmod +x alpine-make-rootfs +fi + +echo "[INFO] Creating Alpine rootfs with selected packages..." +sudo ./alpine-make-rootfs \ + --branch "$ALPINE_VERSION" \ + --mirror http://dl-cdn.alpinelinux.org/alpine \ + --packages "$PACKAGES" \ + "$ROOTFS_DIR" + +echo "[INFO] Binding system directories for chroot..." +sudo mount --bind /dev "$ROOTFS_DIR/dev" +sudo mount --bind /proc "$ROOTFS_DIR/proc" +sudo mount --bind /sys "$ROOTFS_DIR/sys" + +echo "[INFO] Copying part 2 script into chroot..." +sudo cp alpine-base_pt2.sh "$ROOTFS_DIR/alpine-base_pt2.sh" +sudo chmod +x "$ROOTFS_DIR/alpine-base_pt2.sh" + +echo "[INFO] Entering chroot. Run 'exit' when done." +sudo chroot "$ROOTFS_DIR" /alpine-base_pt2.sh + +echo "[INFO] Continuing with packaging after chroot..." +bash alpine-base_pt3.sh "$ROOTFS_DIR" "$OUTPUT_TAR" diff --git a/base-image-script/alpine-image_pt2.sh b/base-image-script/alpine-image_pt2.sh new file mode 100644 index 0000000..e5a4efb --- /dev/null +++ b/base-image-script/alpine-image_pt2.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# Copyright (c) 2025 fithwum +# All rights reserved +echo "[CHROOT] Inside Alpine rootfs" + +echo "[CHROOT] Updating system..." +apk update +apk upgrade + +echo "[CHROOT] Optional cleanup of packages" +# apk del some-unneeded-package + +echo "[CHROOT] Cleaning apk cache..." +rm -rf /var/cache/apk/* + +echo "[CHROOT] Done. Type 'exit' to return to host script." +exit diff --git a/base-image-script/alpine-image_pt3.sh b/base-image-script/alpine-image_pt3.sh new file mode 100644 index 0000000..a84838f --- /dev/null +++ b/base-image-script/alpine-image_pt3.sh @@ -0,0 +1,30 @@ +#!/bin/bash +# Copyright (c) 2025 fithwum +# All rights reserved +set -e + +ROOTFS_DIR="$1" +OUTPUT_TAR="$2" + +echo "[INFO] Unmounting system dirs..." +sudo umount -lf "$ROOTFS_DIR/dev" +sudo umount -lf "$ROOTFS_DIR/proc" +sudo umount -lf "$ROOTFS_DIR/sys" + +echo "[INFO] Cleaning up chroot script..." +sudo rm -f "$ROOTFS_DIR/alpine-base_pt2.sh" + +echo "[INFO] Creating tarball: $OUTPUT_TAR" +sudo tar -czf "$OUTPUT_TAR" -C "$ROOTFS_DIR" . + +echo "[INFO] Image size:" +du -sh "$OUTPUT_TAR" + +# OPTIONAL FTP upload + echo "[INFO] Uploading via FTP..." + ftp-upload -v -h -u --password -d /path "$OUTPUT_TAR" + +echo "[INFO] Cleaning up rootfs directory..." +sudo rm -rf "$ROOTFS_DIR" + +echo "[INFO] Done."