From 71853ef4dcb89e241d674a4dd0cd73ce376594f1 Mon Sep 17 00:00:00 2001 From: Mark Date: Mon, 3 Nov 2025 17:18:11 -0800 Subject: [PATCH] Deploy --- .gitignore | 1 + Dockerfile | 31 +++++++++++++++++++++++++++++++ docker-compose.yml | 12 ++++++++++++ webui/.env_dist | 8 ++++++++ webui/src/lib/saveConfig.ts | 8 ++++---- 5 files changed, 56 insertions(+), 4 deletions(-) create mode 100644 Dockerfile create mode 100644 docker-compose.yml create mode 100644 webui/.env_dist diff --git a/.gitignore b/.gitignore index e3a85a3..38ba468 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ target .DS_Store webui/src/wasm webui/data +.env diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..b4654ea --- /dev/null +++ b/Dockerfile @@ -0,0 +1,31 @@ +FROM rust:1.91 AS rust-builder + +WORKDIR /app +RUN curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh + +COPY rust/ ./rust/ +WORKDIR /app/rust/rhai-codemirror +RUN wasm-pack build --target web --out-dir "../../webui/src/wasm/rhai-codemirror" + +WORKDIR /app/rust/runner +RUN wasm-pack build --target web --out-dir "../../webui/src/wasm/runner" + + +FROM node:24-alpine AS app + +WORKDIR /app + +RUN npm install -g bun +COPY webui/package.json webui/bun.lock* ./webui/ + +WORKDIR /app/webui +RUN bun install --frozen-lockfile +COPY webui/ ./ +COPY --from=rust-builder /app/webui/src/wasm/ ./src/wasm/ + +RUN bun run build + +RUN mkdir -p ../data/scripts +EXPOSE 3000 + +CMD ["bun", "start"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..5061973 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,12 @@ +version: '3.8' + +services: + webui: + build: . + ports: + - "3000:3000" + volumes: + - ./data/scripts:/app/data/scripts + env_file: + - .env + restart: unless-stopped \ No newline at end of file diff --git a/webui/.env_dist b/webui/.env_dist new file mode 100644 index 0000000..6cb3083 --- /dev/null +++ b/webui/.env_dist @@ -0,0 +1,8 @@ +# Script saving configuration +ENABLE_SAVE=true +SAVE_SECRET=save +SAVE_DIRECTORY=./data/scripts +MAX_FILENAME_LENGTH=32 + +# Next.js environment +NODE_ENV=production \ No newline at end of file diff --git a/webui/src/lib/saveConfig.ts b/webui/src/lib/saveConfig.ts index c238e65..ac51840 100644 --- a/webui/src/lib/saveConfig.ts +++ b/webui/src/lib/saveConfig.ts @@ -1,8 +1,8 @@ export const SAVE_CONFIG = { - ENABLE_SAVE: true, - SAVE_SECRET: "save", + ENABLE_SAVE: process.env.ENABLE_SAVE === 'true' || true, + SAVE_SECRET: process.env.SAVE_SECRET || "save", - SAVE_DIRECTORY: "./data/scripts", - MAX_FILENAME_LENGTH: 32, + SAVE_DIRECTORY: process.env.SAVE_DIRECTORY || "./data/scripts", + MAX_FILENAME_LENGTH: parseInt(process.env.MAX_FILENAME_LENGTH || "32"), FILENAME_REGEX: /^[a-zA-Z0-9_\s-]+$/, } as const;