chore: add scheduler deployment hook

Add apps/scheduler/Dockerfile, an optional profile-gated `scheduler` service
in docker-compose, and SCHEDULER_IMAGE/PORT/DEMO_MODE examples in
portainer.env.example. The service stays off by default (scheduler profile)
and SCHEDULER_DEMO_MODE defaults to 0 so the Authentik login is never bypassed
in production.
This commit is contained in:
2026-06-14 13:05:38 -06:00
parent 82c6850cbf
commit 81b8cf8133
3 changed files with 63 additions and 0 deletions
+31
View File
@@ -0,0 +1,31 @@
# Builds the slim @vynte/scheduler app against the shared Cal workspace packages.
FROM node:20 AS builder
WORKDIR /calcom
# next build evaluates @calcom/features imports, so provide the same build-time
# secrets the root image uses. Real values are injected at runtime by compose.
ARG NEXTAUTH_SECRET=secret
ARG CALENDSO_ENCRYPTION_KEY=secret
ARG DATABASE_URL=postgresql://calcom:calcom@postgres:5432/calcom
ARG MAX_OLD_SPACE_SIZE=4096
ENV NODE_ENV=production \
NEXTAUTH_SECRET=${NEXTAUTH_SECRET} \
CALENDSO_ENCRYPTION_KEY=${CALENDSO_ENCRYPTION_KEY} \
DATABASE_URL=${DATABASE_URL} \
DATABASE_DIRECT_URL=${DATABASE_URL} \
NODE_OPTIONS=--max-old-space-size=${MAX_OLD_SPACE_SIZE}
COPY package.json yarn.lock .yarnrc.yml turbo.json i18n.json ./
COPY .yarn ./.yarn
COPY apps/scheduler ./apps/scheduler
COPY packages ./packages
RUN yarn config set httpTimeout 1200000
RUN yarn install
RUN yarn workspace @vynte/scheduler build
EXPOSE 3040
CMD ["yarn", "workspace", "@vynte/scheduler", "start"]
+25
View File
@@ -131,3 +131,28 @@ services:
interval: 30s
timeout: 10s
retries: 10
# Optional slim scheduler UI. Gated behind the "scheduler" profile so it only
# starts with `docker compose --profile scheduler up`.
scheduler:
profiles: ["scheduler"]
image: ${SCHEDULER_IMAGE:-10.0.3.6:4000/zachariahsharma/vynte-scheduler:latest}
build:
context: .
dockerfile: apps/scheduler/Dockerfile
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
ports:
- "${SCHEDULER_PORT:-3040}:3040"
environment:
NODE_ENV: production
NEXTAUTH_SECRET: ${NEXTAUTH_SECRET}
NEXTAUTH_URL: ${NEXTAUTH_URL}
DATABASE_URL: postgresql://${POSTGRES_USER:-calcom}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB:-calcom}
DATABASE_DIRECT_URL: postgresql://${POSTGRES_USER:-calcom}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB:-calcom}
CALENDSO_ENCRYPTION_KEY: ${CALENDSO_ENCRYPTION_KEY}
SCHEDULER_DEMO_MODE: ${SCHEDULER_DEMO_MODE:-0}
networks:
- cal-diy
+7
View File
@@ -21,6 +21,13 @@ CALCOM_IMAGE=10.0.3.6:4000/zachariahsharma/cal-diy-oidc:latest
CALCOM_API_V2_IMAGE=10.0.3.6:4000/zachariahsharma/cal-diy-oidc-api-v2:latest
CALCOM_PORT=3030
CAL_API_V2_PORT=3031
# Optional scheduler service (enable with the "scheduler" compose profile).
# Keep SCHEDULER_DEMO_MODE=0 in production: demo mode bypasses Authentik login.
SCHEDULER_IMAGE=10.0.3.6:4000/zachariahsharma/vynte-scheduler:latest
SCHEDULER_PORT=3040
SCHEDULER_DEMO_MODE=0
POSTGRES_USER=calcom
POSTGRES_DB=calcom
CALCOM_TELEMETRY_DISABLED=1