BetterFrame/deploy/docker/Dockerfile.server
Mitchell R 34331c9d0e
refactor: use BSB container + mount sec-config at runtime
Dockerfile.server now uses betterweb/service-base:node as runtime
base instead of node:24-trixie-slim + manual bsb-plugin-cli. BSB
container handles entrypoint, user, plugin loading.

sec-config.yaml removed from Docker image — must be bind-mounted
at /app/sec-config.yaml. Both compose files updated with :ro mount.
All BF_* env vars removed from compose server service.

deploy/docker/sec-config.yaml deleted (was baked in, now mounted).
version.ts path updated for new workdir /app.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-23 23:56:44 +02:00

61 lines
1.5 KiB
Docker

# BetterFrame server — BSB container with built plugins.
#
# sec-config.yaml is NOT baked in — mount it at runtime:
# volumes:
# - ./sec-config.yaml:/app/sec-config.yaml:ro
#
# Builder stage compiles TS + native deps (argon2).
# Runtime stage uses the official BSB container.
FROM node:24-trixie-slim AS builder
WORKDIR /app
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential python3 \
&& rm -rf /var/lib/apt/lists/*
COPY package.json package-lock.json ./
COPY server/package.json ./server/
COPY tsconfig.base.json ./
RUN npm ci && npm rebuild argon2
COPY server ./server
WORKDIR /app/server
RUN npm run build
# ---- Runtime ----
FROM betterweb/service-base:node
ARG BF_SERVER_VERSION=dev
USER root
# ffmpeg for camera snapshot capture
RUN apt-get update && apt-get install -y --no-install-recommends \
ffmpeg \
&& rm -rf /var/lib/apt/lists/*
RUN mkdir -p /var/lib/betterframe && chown node:node /var/lib/betterframe
WORKDIR /app
# Copy built plugin + deps
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/server/lib ./lib
COPY --from=builder /app/server/bsb-plugin.json ./bsb-plugin.json
COPY --from=builder /app/server/package.json ./package.json
COPY --from=builder /app/tsconfig.base.json ./tsconfig.base.json
# Static web assets served by admin-http
COPY --from=builder /app/server/lib/web-static ./lib/web-static
# Bake version
RUN echo "$BF_SERVER_VERSION" > /app/.bf-version
VOLUME /var/lib/betterframe
EXPOSE 18080 18081 18082
USER node