commit
This commit is contained in:
21
Dockerfile
Normal file
21
Dockerfile
Normal 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"]
|
||||||
38
base-image-script/alpine-image_pt1.sh
Normal file
38
base-image-script/alpine-image_pt1.sh
Normal 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"
|
||||||
17
base-image-script/alpine-image_pt2.sh
Normal file
17
base-image-script/alpine-image_pt2.sh
Normal 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
|
||||||
30
base-image-script/alpine-image_pt3.sh
Normal file
30
base-image-script/alpine-image_pt3.sh
Normal 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."
|
||||||
Reference in New Issue
Block a user