File size: 2,902 Bytes
d724875
 
 
7b04f2c
c6cc4bd
 
 
d724875
c6cc4bd
d724875
 
c6cc4bd
 
 
 
 
 
 
 
a91c436
d724875
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a91c436
d724875
 
 
 
 
3b3841d
d724875
 
9423320
e4775f3
 
840bbe8
d724875
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# syntax=docker/dockerfile:1.4-labs
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