diff --git a/Dockerfile b/Dockerfile index 926576a..e0e320e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,9 @@ FROM alpine:latest +ARG NOVNC_VERSION="1.4.0" +ARG OPENWRT_VERSION="23.05.1" +ARG VERSION_ARG "0.1" + RUN apk add --no-cache \ bash \ tini \ @@ -8,21 +12,21 @@ RUN apk add --no-cache \ qemu-hw-usb-host \ qemu-hw-usb-redirect \ nginx \ - && novnc="1.4.0" \ && mkdir -p /usr/share/novnc \ - && wget https://github.com/novnc/noVNC/archive/refs/tags/v"$novnc".tar.gz -O /tmp/novnc.tar.gz -q \ + && wget https://github.com/novnc/noVNC/archive/refs/tags/v${NOVNC_VERSION}.tar.gz -O /tmp/novnc.tar.gz -q \ && tar -xf /tmp/novnc.tar.gz -C /tmp/ \ - && cd /tmp/noVNC-"$novnc" \ + && cd /tmp/noVNC-${NOVNC_VERSION}\ && mv app core vendor package.json *.html /usr/share/novnc \ && sed -i 's/^worker_processes.*/worker_processes 1;/' /etc/nginx/nginx.conf # Get OpenWrt images RUN mkdir /var/vm \ - && wget "https://archive.openwrt.org/releases/23.05.1/targets/armsr/armv8/openwrt-23.05.1-armsr-armv8-generic-ext4-rootfs.img.gz" \ - -O /var/vm/rootfs.img.gz \ - && wget "https://archive.openwrt.org/releases/23.05.1/targets/armsr/armv8/openwrt-23.05.1-armsr-armv8-generic-kernel.bin" \ + && wget "https://archive.openwrt.org/releases/${OPENWRT_VERSION}/targets/armsr/armv8/openwrt-${OPENWRT_VERSION}-armsr-armv8-generic-ext4-rootfs.img.gz" \ + -O /var/vm/rootfs-${OPENWRT_VERSION}.img.gz \ + && wget "https://archive.openwrt.org/releases/${OPENWRT_VERSION}/targets/armsr/armv8/openwrt-${OPENWRT_VERSION}-armsr-armv8-generic-kernel.bin" \ -O /var/vm/kernel.bin +ENV OPENWRT_VERSION=${OPENWRT_VERSION} COPY ./src /run/ COPY ./web /var/www/ @@ -35,7 +39,6 @@ VOLUME /storage EXPOSE 8006 EXPOSE 8000 -ARG VERSION_ARG "0.0" RUN echo "$VERSION_ARG" > /run/version ENTRYPOINT ["/sbin/tini", "-s", "/run/entry.sh"] diff --git a/src/entry.sh b/src/entry.sh index 4f0bd9e..552e6ce 100755 --- a/src/entry.sh +++ b/src/entry.sh @@ -47,16 +47,16 @@ cd /run trap - ERR # Check if rootfs is in volume -FILE=/storage/rootfs.img +FILE=/storage/rootfs-${OPENWRT_VERSION}.img if [ -f "$FILE" ]; then info "$FILE exists. Nothing to do." else info "$FILE does not exist. Copying image to storage ..." - cp /var/vm/rootfs.img.gz /storage/rootfs.img.gz - gzip -d /storage/rootfs.img.gz + cp /var/vm/rootfs-${OPENWRT_VERSION}.img.gz /storage/rootfs-${OPENWRT_VERSION}.img.gz + gzip -d /storage/rootfs-${OPENWRT_VERSION}.img.gz info "Inject some additional files into the image" - mount /storage/rootfs.img /mnt + mount /storage/rootfs-${OPENWRT_VERSION}.img /mnt # mount -o offset=$((512*262656)) /storage/disk.img /mnt # combined image ext4 partition starts at offset 262656 chmod +x /var/vm/openwrt_additional/bin/* cp /var/vm/openwrt_additional/bin/* /mnt/usr/bin/ @@ -130,7 +130,7 @@ exec qemu-system-aarch64 -M virt \ -display vnc=:0,websocket=5700 \ -vga none -device ramfb \ -kernel /var/vm/kernel.bin -append "root=fe00 console=tty0" \ --blockdev driver=raw,node-name=hd0,cache.direct=on,file.driver=file,file.filename=/storage/rootfs.img \ +-blockdev driver=raw,node-name=hd0,cache.direct=on,file.driver=file,file.filename=/storage/rootfs-${OPENWRT_VERSION}.img \ -device virtio-blk-pci,drive=hd0 \ -device qemu-xhci -device usb-kbd \ $LAN_ARGS \