# 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"]
