spb/datacenterindex
Public
HTML 53.9%
TypeScript 44.5%
JavaScript 0.6%
SQL 0.5%
1#!/bin/sh2# DataCenterIndex container entrypoint (worker + api images). The first argument selects the role:3# worker BullMQ crawl/ingest worker (apps/worker/src/main.ts) — default CMD of Dockerfile.worker4# scheduler connector scheduler (apps/worker/src/scheduler.ts)5# cli|dci `pnpm dci …` equivalent (apps/worker/src/cli.ts) — e.g. `cli run peeringdb --dry-run --limit 5`6# migrate Postgres migrations → seed (if packages/db/src/seed.ts exists) → ClickHouse DDL, then exit7# api Fastify API (apps/api/src/main.ts | server.ts | index.ts) — default CMD of Dockerfile.api8# anything else is exec'd verbatim (`sh`, `node …`).9set -eu10cd /app11TSX="node /app/node_modules/tsx/dist/cli.mjs"1213first_existing() {14 for f in "$@"; do15 if [ -f "$f" ]; then echo "$f"; return 0; fi16 done17 echo "entrypoint: none of the candidate entry files exist: $*" >&218 return 119}2021role="${1:-worker}"22[ "$#" -gt 0 ] && shift2324case "$role" in25 worker)26 exec $TSX apps/worker/src/main.ts "$@" ;;27 scheduler)28 exec $TSX apps/worker/src/scheduler.ts "$@" ;;29 cli|dci)30 exec $TSX apps/worker/src/cli.ts "$@" ;;31 api)32 entry="$(first_existing apps/api/src/main.ts apps/api/src/server.ts apps/api/src/index.ts)"33 exec $TSX "$entry" "$@" ;;34 migrate)35 echo "[migrate] postgres migrations"36 $TSX packages/db/src/migrate.ts37 if [ "${DCI_SKIP_SEED:-0}" != "1" ]; then38 if [ -f packages/db/src/seed.ts ]; then39 echo "[migrate] seed"40 $TSX packages/db/src/seed.ts41 else42 echo "[migrate] no packages/db/src/seed.ts — seed skipped"43 fi44 fi45 if [ "${DCI_SKIP_CLICKHOUSE:-0}" != "1" ]; then46 echo "[migrate] clickhouse ddl"47 $TSX deploy/docker/ensure-clickhouse.ts48 fi49 echo "[migrate] done"50 exit 0 ;;51 *)52 exec "$role" "$@" ;;53esac54