diff --git a/Dockerfile b/Dockerfile index 79880306..17391bb8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,6 +5,11 @@ # # Pass --build-arg VITE_BUILD_HASH=$(git rev-parse --short HEAD) to stamp the build. # A .env in the build context is picked up by scripts/build.sh for branding config. +# +# Self-hosted deployments can override branding/feature settings by passing +# VITE_* build args below (e.g. VITE_EMAIL_NOTIFICATION_SERVER). Unset args keep +# the value from the tracked .env (scripts/build.sh sources it and restores the +# exported environment), so local overrides never clobber upstream defaults. # https://pnpm.io/docker#example-3-build-on-cicd FROM node:24-slim AS builder @@ -17,9 +22,20 @@ ENV NODE_OPTIONS=--max_old_space_size=16384 COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./ RUN pnpm i --frozen-lockfile COPY . . + ARG VITE_BUILD_HASH -RUN pnpm run build -RUN pnpm run build:server +ARG VITE_PLATFORM_URL +ARG VITE_PLATFORM_NAME +ARG VITE_PLATFORM_DESCRIPTION +ARG VITE_PLATFORM_ACCENT +ARG VITE_PLATFORM_SECONDARY +ARG VITE_DEFAULT_PUBKEYS +ARG VITE_PLATFORM_LOGO +ARG VITE_PLATFORM_RELAYS +ARG VITE_EMAIL_NOTIFICATION_SERVER + +RUN bash -c 'for v in VITE_BUILD_HASH VITE_PLATFORM_URL VITE_PLATFORM_NAME VITE_PLATFORM_DESCRIPTION VITE_PLATFORM_ACCENT VITE_PLATFORM_SECONDARY VITE_DEFAULT_PUBKEYS VITE_PLATFORM_LOGO VITE_PLATFORM_RELAYS VITE_EMAIL_NOTIFICATION_SERVER; do if [ -n "${!v}" ]; then export "$v=${!v}"; fi; done; pnpm run build' +RUN bash -c 'for v in VITE_BUILD_HASH VITE_PLATFORM_URL VITE_PLATFORM_NAME VITE_PLATFORM_DESCRIPTION VITE_PLATFORM_ACCENT VITE_PLATFORM_SECONDARY VITE_DEFAULT_PUBKEYS VITE_PLATFORM_LOGO VITE_PLATFORM_RELAYS VITE_EMAIL_NOTIFICATION_SERVER; do if [ -n "${!v}" ]; then export "$v=${!v}"; fi; done; pnpm run build:server' FROM node:24-slim AS production ENV NODE_ENV=production