From a5a9e51898e71cd60500c7c287005f7fefd96bb6 Mon Sep 17 00:00:00 2001 From: seb Date: Mon, 26 Oct 2026 21:21:08 +0000 Subject: [PATCH] u --- .dockerignore | 10 ++++++++++ Dockerfile | 45 +++++++++++++++++++++++++++++++++++++++++++++ docker-compose.yml | 41 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 96 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100644 docker-compose.yml diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..3daa5df --- /dev/null +++ b/.dockerignore @@ -0,0 +1,10 @@ +node_modules +data +certs +.git +.env +.env.* +!.env.example +*.log +docs/api +scratch diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..aa2b8b7 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,45 @@ +# syntax=docker/dockerfile:1 +FROM node:22-bookworm-slim + +# Install system libraries needed by native Node modules (better-sqlite3, canvas, sharp) +RUN apt-get update && apt-get install -y --no-install-recommends \ + ca-certificates \ + curl \ + python3 \ + make \ + g++ \ + libcairo2-dev \ + libpango1.0-dev \ + libjpeg-dev \ + libgif-dev \ + librsvg2-dev \ + && rm -rf /var/lib/apt/lists/* + +WORKDIR /app + +# Copy sibling dependencies referenced by package.json ("file:../dashdbschema", "file:../llmorbiter") +COPY dashdbschema /dashdbschema +COPY llmorbiter /llmorbiter + +# Copy dashback package manifests +COPY dashback/package*.json ./ + +# Install all dependencies (including devDependencies required by OpenAPI live docs generator) +RUN npm install + +# Copy application source code +COPY dashback/src ./src +COPY dashback/scripts ./scripts + +# Set production defaults +ENV NODE_ENV=production \ + HOST=0.0.0.0 \ + PORT=4208 \ + HTTPS_PORT=0 \ + SQLITE_PATH=/app/data/dash.db \ + STORAGE_DIR=/app/data/storage \ + BACKUP_DIR=/app/data/backups + +EXPOSE 4208 + +CMD ["node", "src/index.js"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..fda5156 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,41 @@ +services: + dashback: + build: + context: .. + dockerfile: dashback/Dockerfile + image: dashback:latest + container_name: dashback + read_only: true + user: "${UID:-1000}:${GID:-1000}" + tmpfs: + - /tmp:rw,noexec,nosuid,size=64m + - /run:rw,noexec,nosuid,size=16m + networks: + - dash_net + ports: + - "127.0.0.1:4208:4208" + environment: + - HOST=0.0.0.0 + - PORT=4208 + - HTTPS_PORT=0 + - MSSQL_SERVER=sql_server + - SQLITE_PATH=/app/data/dash.db + - STORAGE_DIR=/app/data/storage + - BACKUP_DIR=/app/data/backups + # If a .env file is present, its values will be loaded: + env_file: + - path: .env + required: false + volumes: + # Shared repo directory (read-only) + - .:/app:ro + # Writable data directory + - ./data:/app/data:rw + # Sibling repositories for local symlink resolution + - ../dashdbschema:/dashdbschema:ro + - ../llmorbiter:/llmorbiter:ro + restart: unless-stopped + +networks: + dash_net: + external: true