This repository has been archived on 2026-08-19. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
krisf 92373aa3c6 fix(entrypoint): arm cron worker via self-ping after boot
instrumentationHook is disabled in the standalone build, so node-cron only
arms on POST /api/worker/ping. Without a self-ping, a fresh container or
restart runs zero ingest passes (worker silently never armed) — exactly
what happened on the :8 deploy. Adds the same self-ping block as
technews/finance entrypoints (identical).
2026-08-18 11:22:12 -04:00

45 lines
1.3 KiB
Bash

#!/bin/sh
# MapleBrief entrypoint
# 1) First boot: seed /data with the clean migrated DB + write privileged key if provided
# 2) Start Next standalone server
set -e
cd /app
DB="${DATABASE_URL#file:}"
[ -n "$DB" ] || DB=/data/dev.db
# Export an absolute DATABASE_URL for the Node/Prisma process (relative
# paths resolve against the schema dir and can point at the wrong file).
case "$DB" in
/*) ;;
*) DB="/$DB" ;;
esac
export DATABASE_URL="file:$DB"
if [ ! -f "$DB" ]; then
# create parent dir (volume may be fresh)
DIR="$(dirname "$DB")"
mkdir -p "$DIR"
cp ./seed-dev.db "$DB"
echo "[entrypoint] initialized $DB from seed snapshot"
fi
# Arm the ingest/synthesis worker once the server answers.
# The Next standalone build has instrumentationHook disabled, so node-cron
# only starts when a request reaches /api/worker/ping. Pinging ourselves
# after boot means a fresh container or restart re-arms the worker (and
# triggers the boot pipeline pass) without any external health pinger.
(
APP_IP="$(hostname -i 2>/dev/null | awk '{print $1}')"
[ -z "$APP_IP" ] && APP_IP=127.0.0.1
i=0
until curl -sf -o /dev/null --max-time 2 "http://${APP_IP}:${PORT:-3000}/api/worker/ping"; do
i=$((i + 1))
[ "$i" -ge 90 ] && exit 0
sleep 1
done
echo "[entrypoint] armed cron worker via /api/worker/ping"
) >/dev/null 2>&1 &
exec node server.js