From 46480819aeb1b043bdf09a0c4fbc4a04f26cdb96 Mon Sep 17 00:00:00 2001 From: Logan Dam Date: Sat, 18 Jan 2025 11:14:33 +0100 Subject: [PATCH 1/2] add dockerfile --- .dockerignore | 44 ++++++++++++++++++++++++++++++++++++++++++++ Dockerfile | 23 +++++++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..22581fb9 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,44 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# Dependencies +node_modules +.pnp +.pnp.js + +# Local env files +.env +.env.local +.env.development.local +.env.test.local +.env.production.local + +# Testing +coverage + +# Turbo +.turbo + +# Vercel +.vercel + +# Build Outputs +.next/ +out/ +build +dist + + +# Debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Misc +.DS_Store +*.pem + +# Data +_data/ + +# Generated Service Workers +dev-dist/ \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..557d2aa6 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,23 @@ +FROM debian:12 AS rpibuild + +# install deps +RUN apt-get update +RUN apt-get install -y coreutils quilt parted qemu-user-static debootstrap zerofree zip \ + dosfstools libarchive-tools libcap2-bin grep rsync xz-utils file git curl bc \ + gpg pigz xxd arch-test + +# install node +# see https://serverfault.com/a/1145098 +RUN mkdir -p /etc/apt/keyrings; +RUN curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg; +RUN echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list; +RUN apt-get update && apt-get install -y nodejs; + +# install pnpm +RUN npm install -g pnpm + +# build coatrack +WORKDIR /build/src +COPY . . +RUN pnpm install +RUN pnpm build From 983c0ca5e7467b9f1a99d1e20096824e06378930 Mon Sep 17 00:00:00 2001 From: Logan Dam Date: Sat, 18 Jan 2025 13:16:22 +0100 Subject: [PATCH 2/2] wip rpi image building --- .dockerignore | 44 --------------------------- Dockerfile | 23 -------------- rpi/README.md | 11 +++++++ rpi/build-image.sh | 11 +++++++ rpi/build.sh | 1 + rpi/rpi-gen-config/config | 7 +++++ rpi/rpi-gen-config/stage3/SKIP | 0 rpi/rpi-gen-config/stage4/SKIP | 0 rpi/rpi-gen-config/stage4/SKIP_IMAGES | 0 rpi/rpi-gen-config/stage5/SKIP | 0 rpi/rpi-gen-config/stage5/SKIP_IMAGES | 0 11 files changed, 30 insertions(+), 67 deletions(-) delete mode 100644 .dockerignore delete mode 100644 Dockerfile create mode 100644 rpi/README.md create mode 100755 rpi/build-image.sh create mode 100755 rpi/build.sh create mode 100644 rpi/rpi-gen-config/config create mode 100644 rpi/rpi-gen-config/stage3/SKIP create mode 100644 rpi/rpi-gen-config/stage4/SKIP create mode 100644 rpi/rpi-gen-config/stage4/SKIP_IMAGES create mode 100644 rpi/rpi-gen-config/stage5/SKIP create mode 100644 rpi/rpi-gen-config/stage5/SKIP_IMAGES diff --git a/.dockerignore b/.dockerignore deleted file mode 100644 index 22581fb9..00000000 --- a/.dockerignore +++ /dev/null @@ -1,44 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# Dependencies -node_modules -.pnp -.pnp.js - -# Local env files -.env -.env.local -.env.development.local -.env.test.local -.env.production.local - -# Testing -coverage - -# Turbo -.turbo - -# Vercel -.vercel - -# Build Outputs -.next/ -out/ -build -dist - - -# Debug -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# Misc -.DS_Store -*.pem - -# Data -_data/ - -# Generated Service Workers -dev-dist/ \ No newline at end of file diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 557d2aa6..00000000 --- a/Dockerfile +++ /dev/null @@ -1,23 +0,0 @@ -FROM debian:12 AS rpibuild - -# install deps -RUN apt-get update -RUN apt-get install -y coreutils quilt parted qemu-user-static debootstrap zerofree zip \ - dosfstools libarchive-tools libcap2-bin grep rsync xz-utils file git curl bc \ - gpg pigz xxd arch-test - -# install node -# see https://serverfault.com/a/1145098 -RUN mkdir -p /etc/apt/keyrings; -RUN curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg; -RUN echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list; -RUN apt-get update && apt-get install -y nodejs; - -# install pnpm -RUN npm install -g pnpm - -# build coatrack -WORKDIR /build/src -COPY . . -RUN pnpm install -RUN pnpm build diff --git a/rpi/README.md b/rpi/README.md new file mode 100644 index 00000000..bd1e22af --- /dev/null +++ b/rpi/README.md @@ -0,0 +1,11 @@ +# Raspberry Pi Image + +This directory contains the files required to build a coatrack raspberry pi image. + +The `rpi-gen-config` directory contains the configuration that can be merged with the pi-gen directory structure to build the raspberry pi image. + +The `build.sh` script does the following: + +- start an arm64 debian image +- install dependencies for [pi-gen](https://github.com/RPI-Distro/pi-gen.git) +- use the build configuration to produce an image in the `build` directory diff --git a/rpi/build-image.sh b/rpi/build-image.sh new file mode 100755 index 00000000..b5034cf4 --- /dev/null +++ b/rpi/build-image.sh @@ -0,0 +1,11 @@ +apt-get update +apt-get install -y coreutils quilt parted qemu-user-static debootstrap zerofree zip \ + dosfstools libarchive-tools libcap2-bin grep rsync xz-utils file git curl bc \ + gpg pigz xxd arch-test kmod + +mkdir -p /build/rpi +cd /build/rpi +git clone --branch arm64 https://github.com/RPI-Distro/pi-gen.git --depth 1 +cp -r /src/rpi-gen-config/* /build/rpi/pi-gen/ +cd /build/rpi/pi-gen +./build.sh \ No newline at end of file diff --git a/rpi/build.sh b/rpi/build.sh new file mode 100755 index 00000000..87c224ab --- /dev/null +++ b/rpi/build.sh @@ -0,0 +1 @@ +docker run --privileged -v .:/src -v ./build:/out arm64v8/debian /bin/bash -c /src/build-image.sh \ No newline at end of file diff --git a/rpi/rpi-gen-config/config b/rpi/rpi-gen-config/config new file mode 100644 index 00000000..960fa35d --- /dev/null +++ b/rpi/rpi-gen-config/config @@ -0,0 +1,7 @@ +IMG_NAME="coatrack-$RELEASE-$ARCH" +PI_GEN_RELEASE="we should set this" +RELEASE="bookworm" # debian 12 +USE_QEMU=1 +TARGET_HOSTNAME="coatrack" +FIRST_USER_NAME="user" +DEPLOY_DIR=/out \ No newline at end of file diff --git a/rpi/rpi-gen-config/stage3/SKIP b/rpi/rpi-gen-config/stage3/SKIP new file mode 100644 index 00000000..e69de29b diff --git a/rpi/rpi-gen-config/stage4/SKIP b/rpi/rpi-gen-config/stage4/SKIP new file mode 100644 index 00000000..e69de29b diff --git a/rpi/rpi-gen-config/stage4/SKIP_IMAGES b/rpi/rpi-gen-config/stage4/SKIP_IMAGES new file mode 100644 index 00000000..e69de29b diff --git a/rpi/rpi-gen-config/stage5/SKIP b/rpi/rpi-gen-config/stage5/SKIP new file mode 100644 index 00000000..e69de29b diff --git a/rpi/rpi-gen-config/stage5/SKIP_IMAGES b/rpi/rpi-gen-config/stage5/SKIP_IMAGES new file mode 100644 index 00000000..e69de29b