|
|
|
|
|
FROM ubuntu:24.04 as base |
|
|
ENV DEBIAN_FRONTEND=noninteractive |
|
|
ARG ROOTFS=/tmp/restore |
|
|
ARG SSH_HOST |
|
|
ARG SSH_USER |
|
|
ARG SSH_PATH=/var/tmp/restic |
|
|
|
|
|
RUN apt update && apt install -yq wget bzip2 make time sshfs fuse3 && \ |
|
|
wget -qO - https://raw.githubusercontent.com/cupcakearmy/autorestic/master/install.sh | bash && \ |
|
|
autorestic --version && \ |
|
|
mkdir -p ${ROOTFS} |
|
|
|
|
|
RUN mkdir -p -m 0700 ~/.ssh && ssh-keyscan ${SSH_HOST} >> ~/.ssh/known_hosts |
|
|
|
|
|
WORKDIR /var/tmp/restic |
|
|
RUN --security=insecure --mount=type=ssh sshfs -v -o auto_cache,reconnect,transform_symlinks,follow_symlinks ${SSH_USER}@${SSH_HOST}:${SSH_PATH} /var/tmp/restic && \ |
|
|
cd /var/tmp/restic && \ |
|
|
ls -la && \ |
|
|
make restore RESTORE_DST=${ROOTFS} |
|
|
|
|
|
WORKDIR ${ROOTFS} |
|
|
RUN --security=insecure \ |
|
|
mkdir -p ${ROOTFS}/proc && \ |
|
|
mkdir -p ${ROOTFS}/dev && \ |
|
|
mkdir -p ${ROOTFS}/dev/pts && \ |
|
|
mkdir -p ${ROOTFS}/sys && \ |
|
|
mkdir -p ${ROOTFS}/run && \ |
|
|
mount --bind /proc ${ROOTFS}/proc && \ |
|
|
mount --bind /dev ${ROOTFS}/dev && \ |
|
|
mount --bind /sys ${ROOTFS}/sys && \ |
|
|
mount --bind /run ${ROOTFS}/run && \ |
|
|
mount -t devpts devpts ${ROOTFS}/dev/pts && \ |
|
|
mkdir -p ${ROOTFS}/home/eggs/.overlay && \ |
|
|
mount -t tmpfs tmpfs ${ROOTFS}/home/eggs/.overlay/ && \ |
|
|
mkdir -p ${ROOTFS}/home/eggs/.overlay/{upperdir,workdir} && \ |
|
|
mkdir -p ${ROOTFS}/home/eggs/.mnt/filesystem.squashfs/var && \ |
|
|
mkdir -p ${ROOTFS}/home/eggs/.overlay/lowerdir/var && \ |
|
|
mkdir -p ${ROOTFS}/home/eggs/.overlay/upperdir/var && \ |
|
|
mkdir -p ${ROOTFS}/home/eggs/.overlay/workdir/var && \ |
|
|
mount -t overlay overlay -o lowerdir=${ROOTFS}/home/eggs/.overlay/lowerdir/var,upperdir=${ROOTFS}/home/eggs/.overlay/upperdir/var,workdir=${ROOTFS}/home/eggs/.overlay/workdir/var ${ROOTFS}/home/eggs/.mnt/filesystem.squashfs/var || dmesg && \ |
|
|
chroot ${ROOTFS} /bin/bash -c "rm /etc/resolv.conf && \ |
|
|
echo nameserver 8.8.8.8 > /etc/resolv.conf && \ |
|
|
cp -L /boot/vmlinuz /boot/vmlinuz-$(uname -r) || true && \ |
|
|
cd /tmp && \ |
|
|
/usr/bin/git clone https://github.com/pieroproietti/get-eggs && \ |
|
|
cd get-eggs && \ |
|
|
./get-eggs.sh && \ |
|
|
rm -rf /*is-merged && \ |
|
|
export CASPER_GENERATE_UUID=1 && \ |
|
|
eggs calamares -i -r -v && \ |
|
|
SUDO_USER=ubuntu eggs produce --max --nointeractive --noicon --excludes=static,homes -v --release" && \ |
|
|
for m in $(mount | awk '{print $3}' | grep "^${ROOTFS}"); do umount -lf $m; done && \ |
|
|
export EXCLUDE_FILE=$(find ${ROOTFS}/home/eggs -name "*.iso" -type f -printf "%T@ %p\n" | sort -n | tail -1 | cut -d' ' -f2) && \ |
|
|
find ${ROOTFS} -type f ! -path "${EXCLUDE_FILE}" -exec rm -rf {} + && \ |
|
|
mv $(find ${ROOTFS}/home/eggs -name "*.iso" -type f -printf "%T@ %p\n" | sort -n | tail -1 | cut -d' ' -f2) /tmp/distro-live.iso |
|
|
|
|
|
FROM alpine |
|
|
COPY --from=base /tmp/distro-live.iso /distro-live.iso |
|
|
|