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