From 7c601769c08dc234101685d95aa6b8c58f0927fa Mon Sep 17 00:00:00 2001 From: iceBear67 Date: Sun, 21 Jun 2026 13:46:41 +0800 Subject: [PATCH] add bubble setup --- BUILD.sh | 64 +++++++++++++++++----------- Dockerfile => hypervisor.Dockerfile | 4 -- image/overlay/etc/init.d/auth-server | 2 +- image/overlay/etc/init.d/bubble | 2 +- vm.Dockerfile | 31 ++++++++++++++ 5 files changed, 72 insertions(+), 31 deletions(-) rename Dockerfile => hypervisor.Dockerfile (98%) create mode 100644 vm.Dockerfile diff --git a/BUILD.sh b/BUILD.sh index 39b0739..942bc19 100755 --- a/BUILD.sh +++ b/BUILD.sh @@ -29,8 +29,6 @@ if [[ "$CLOUD_GATEWAY_ADDRESS" -eq "" ]]; then hasunset=1 fi -TMP_DIR=$(mktemp -d) - if [[ "$hasunset" -ne 0 ]]; then echo "" echo "Default values will be used for unset environments:" @@ -38,39 +36,55 @@ if [[ "$hasunset" -ne 0 ]]; then set | grep -E "^CLOUD_" fi -cleanup_() { - rm -rf $TMP_DIR -} +# TMP_DIR=$(mktemp -d) +# cleanup_() { +# rm -rf $TMP_DIR +# } -trap cleanup_ INT TERM EXIT +# trap cleanup_ INT TERM EXIT IMAGE_TAG=$(git rev-parse --short HEAD) IMAGE_NAME=${IMAGE_NAME:-bearcloud} echo "Image tag: $IMAGE_NAME:$IMAGE_TAG and $IMAGE_NAME:latest" -echo "Additional arguments: $@" +echo "Additional arguments for VM image: $VM_OPTS" +echo "Additional arguments for Hypervisor Image: $HY_OPTS" echo "Continue?" read -rm -rf "$TMP_DIR" -cp -r ./image $TMP_DIR -sed -i "s#_REPO_#$CLOUD_CONFIG_REPO#g" $TMP_DIR/overlay/daemon/update-keys.sh && \ -sed -i "s#_REVISION_#$CLOUD_CONFIG_REVISION#g" $TMP_DIR/overlay/daemon/update-keys.sh && \ -sed -i "s#GATEWAY_ADDRESS#$CLOUD_GATEWAY_ADDRESS#g" $TMP_DIR/overlay/etc/dhcp/dhclient.conf +# rm -rf "$TMP_DIR" +# cp -r ./image $TMP_DIR +# sed -i "s#_REPO_#$CLOUD_CONFIG_REPO#g" $TMP_DIR/overlay/daemon/update-keys.sh && \ +# sed -i "s#_REVISION_#$CLOUD_CONFIG_REVISION#g" $TMP_DIR/overlay/daemon/update-keys.sh && \ +# sed -i "s#GATEWAY_ADDRESS#$CLOUD_GATEWAY_ADDRESS#g" $TMP_DIR/overlay/etc/dhcp/dhclient.conf -pushd $PWD >/dev/null +# pushd $PWD >/dev/null -cd $TMP_DIR -export IMAGE_ARTIFACT="$PWD/vm.raw" -rm -f vm.raw && ./build-image.sh -if [ ! -f $IMAGE_ARTIFACT ]; then - exit 2 +# cd $TMP_DIR +# export IMAGE_ARTIFACT="$PWD/vm.raw" +# rm -f vm.raw && ./build-image.sh +# if [ ! -f $IMAGE_ARTIFACT ]; then +# exit 2 +# fi + +# popd > /dev/null + +# mv $IMAGE_ARTIFACT ./data/ +# IMAGE_ARTIFACT="$PWD/data/vm.raw" + +BUILDERS=$(docker buildx ls) +if ! (echo $BUILDERS | grep -q "bearcloud"); then + docker buildx create --name bearcloud --buildkitd-flags '--allow-insecure-entitlement security.insecure' fi +echo "BUILDING VM DISK IMAGE" +docker build \ + --builder bearcloud \ + --allow security.insecure \ + -f vm.Dockerfile \ + --target export \ + --output type=local,dest=./data \ + $VM_OPTS . -popd > /dev/null - -mv $IMAGE_ARTIFACT ./data/ -IMAGE_ARTIFACT="$PWD/data/vm.raw" - -docker build -t "$IMAGE_NAME:$IMAGE_TAG" -t "$IMAGE_NAME:latest" $@ . - +echo "BUILDING HYPERVISOR IMAGE" +docker build -t "$IMAGE_NAME:$IMAGE_TAG" -t "$IMAGE_NAME:latest" \ + -f hypervisor.Dockerfile $HY_OPTS . diff --git a/Dockerfile b/hypervisor.Dockerfile similarity index 98% rename from Dockerfile rename to hypervisor.Dockerfile index efd422a..29da0ea 100644 --- a/Dockerfile +++ b/hypervisor.Dockerfile @@ -5,7 +5,3 @@ RUN apk update && apk add bash curl jq tini linux-virt && sh /setup.sh && rm /se COPY ./scripts/entrypoint.sh /entrypoint.sh ENTRYPOINT ["/sbin/tini", "/entrypoint.sh"] - - - - diff --git a/image/overlay/etc/init.d/auth-server b/image/overlay/etc/init.d/auth-server index 4e9c12e..7c4e50b 100755 --- a/image/overlay/etc/init.d/auth-server +++ b/image/overlay/etc/init.d/auth-server @@ -1,5 +1,5 @@ #!/sbin/openrc-run -command="/usr/bin/auth-server" +command="/bin/auth-server" command_background=true command_args="-addr 0.0.0.0:8080 -root /users" command_user="keeper" diff --git a/image/overlay/etc/init.d/bubble b/image/overlay/etc/init.d/bubble index 7bb6d40..28a6795 100755 --- a/image/overlay/etc/init.d/bubble +++ b/image/overlay/etc/init.d/bubble @@ -4,7 +4,7 @@ depend() { need auth-server docker } -command="/usr/bin/bubble" +command="/bin/bubble" command_args="-config /daemon/config.yaml" pidfile="/run/${RC_SVCNAME}.pid" command_background=true diff --git a/vm.Dockerfile b/vm.Dockerfile new file mode 100644 index 0000000..630023b --- /dev/null +++ b/vm.Dockerfile @@ -0,0 +1,31 @@ +FROM golang:1.25-alpine AS bubble-builder + +WORKDIR /src +RUN apk add git && git clone https://github.com/iceBear67/bubble && go mod download && mkdir /build +RUN CGO_ENABLED=0 go build -o /build/daemon . && \ + CGO_ENABLED=0 go build -o /build/auth_server ./util/ + +COPY . . + +ARG TARGETOS +ARG TARGETARCH +RUN CGO_ENABLED=0 GOOS=$TARGETOS GOARCH=$TARGETARCH \ + go build -o /build/daemon . && \ + CGO_ENABLED=0 GOOS=$TARGETOS GOARCH=$TARGETARCH \ + go build -o /build/auth_server ./util/ + +FROM alpine:latest AS rootfs-builder +ENV CLOUD_CONFIG_REPO="https://git.sfclub.cc/cloud/bearnet" +ENV CLOUD_CONFIG_REVISION="wish" +ENV CLOUD_GATEWAY_ADDRESS="10.0.0.119" +RUN apk update && apk add alpine-make-vm-image +COPY ./image /kitchen +RUN sed -i "s#_REPO_#$CLOUD_CONFIG_REPO#g" /kitchen/overlay/daemon/update-keys.sh && \ + sed -i "s#_REVISION_#$CLOUD_CONFIG_REVISION#g" /kitchen/overlay/daemon/update-keys.sh && \ + sed -i "s#GATEWAY_ADDRESS#$CLOUD_GATEWAY_ADDRESS#g" /kitchen/overlay/etc/dhcp/dhclient.conf +COPY --from=bubble-builder /build/daemon /bin/bubble +COPY --from=bubble-builder /build/auth_server /bin/auth-server +RUN --security=insecure \ + cd /kitchen && rm -f vm.raw && ./build-image.sh + +