59 lines
1.5 KiB
Bash
59 lines
1.5 KiB
Bash
|
|
#!/bin/sh
|
||
|
|
set -e
|
||
|
|
|
||
|
|
# Generate settings.json from template using environment variables
|
||
|
|
envsubst < /app/docker/settings.json.tmpl > /app/settings.json
|
||
|
|
|
||
|
|
MODE="${1:-web}"
|
||
|
|
|
||
|
|
case "$MODE" in
|
||
|
|
web)
|
||
|
|
# Initialize DB collections/stats document before starting workers
|
||
|
|
# (equivalent to what prestart.js does before launching pm2/forever)
|
||
|
|
node -e "
|
||
|
|
const db = require('./lib/database');
|
||
|
|
db.connect(null, function() {
|
||
|
|
db.initialize_data_startup(function() {
|
||
|
|
process.exit(0);
|
||
|
|
});
|
||
|
|
});
|
||
|
|
"
|
||
|
|
exec node --stack-size=10000 ./bin/cluster
|
||
|
|
;;
|
||
|
|
|
||
|
|
sync-blocks)
|
||
|
|
echo "[sync-blocks] Starting block sync loop (interval: ${SYNC_BLOCKS_INTERVAL:-120}s)"
|
||
|
|
while true; do
|
||
|
|
node --stack-size=10000 ./scripts/sync.js index update || true
|
||
|
|
sleep "${SYNC_BLOCKS_INTERVAL:-120}"
|
||
|
|
done
|
||
|
|
;;
|
||
|
|
|
||
|
|
sync-markets)
|
||
|
|
echo "[sync-markets] Starting market sync (runs in internal loop)"
|
||
|
|
exec node --stack-size=10000 ./scripts/sync.js market
|
||
|
|
;;
|
||
|
|
|
||
|
|
sync-peers)
|
||
|
|
echo "[sync-peers] Starting peer sync loop (interval: ${SYNC_PEERS_INTERVAL:-300}s)"
|
||
|
|
while true; do
|
||
|
|
node --stack-size=10000 ./scripts/sync.js peers || true
|
||
|
|
sleep "${SYNC_PEERS_INTERVAL:-300}"
|
||
|
|
done
|
||
|
|
;;
|
||
|
|
|
||
|
|
reindex)
|
||
|
|
echo "[reindex] Running full reindex..."
|
||
|
|
exec node --stack-size=10000 ./scripts/sync.js index reindex
|
||
|
|
;;
|
||
|
|
|
||
|
|
check-blocks)
|
||
|
|
echo "[check-blocks] Checking for missing transactions..."
|
||
|
|
exec node --stack-size=10000 ./scripts/sync.js index check
|
||
|
|
;;
|
||
|
|
|
||
|
|
*)
|
||
|
|
exec "$@"
|
||
|
|
;;
|
||
|
|
esac
|