This commit is contained in:
2025-07-06 07:51:22 -07:00
parent 4de8705305
commit 8784c24a69
4 changed files with 106 additions and 0 deletions

21
Dockerfile Normal file
View File

@@ -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"]

View File

@@ -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"

View File

@@ -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

View File

@@ -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 <IP> -u <USER> --password <PASS> -d /path "$OUTPUT_TAR"
echo "[INFO] Cleaning up rootfs directory..."
sudo rm -rf "$ROOTFS_DIR"
echo "[INFO] Done."