Files
lcbp3.np-dms.work/backend/start-dev.sh
2025-09-21 20:29:15 +07:00

42 lines
2.0 KiB
Bash

#!/bin/sh
# start-dev.sh — robust on QNAP/Container Station
set -e
# ===== 1) ENV defaults (ดีต่อ NFS/QNAP) =====
: "${PORT:=3001}"
: "${CHOKIDAR_USEPOLLING:=1}"
: "${CHOKIDAR_INTERVAL:=300}"
: "${WATCHPACK_POLLING:=true}"
export PORT CHOKIDAR_USEPOLLING CHOKIDAR_INTERVAL WATCHPACK_POLLING
# ===== 2) ใช้ deps ที่ bake ไว้ถ้ามี (/opt/runtime/node_modules) =====
BAKED="/opt/runtime/node_modules"
if [ -d "$BAKED" ]; then
# พยายามชี้ /app/node_modules → /opt/runtime/node_modules (ครั้งเดียวพอ)
if [ ! -L /app/node_modules ]; then
if [ ! -e /app/node_modules ] || [ -z "$(ls -A /app/node_modules 2>/dev/null)" ]; then
mkdir -p /app 2>/dev/null || true
# สำคัญ: ชี้ที่ /app/node_modules ตรง ๆ (ไม่ใช่ node_modules/node_modules)
ln -sfn "$BAKED" /app/node_modules 2>/dev/null || true
fi
fi
# ถึงจะ symlink ไม่ได้ เราก็ยัง resolve ได้ผ่าน PATH/NODE_PATH
export PATH="$BAKED/.bin:$PATH"
export NODE_PATH="$BAKED${NODE_PATH:+:$NODE_PATH}"
fi
# ===== 3) ให้แน่ใจว่า /app/node_modules มีอยู่ และพยายาม set owner (best-effort) =====
mkdir -p /app/node_modules 2>/dev/null || true
chown -R "$(id -u)":"$(id -g)" /app/node_modules 2>/dev/null || true
# ===== 4) ถ้าไม่มี nodemon เลย → ติดตั้ง dev deps แบบ fallback =====
if ! command -v nodemon >/dev/null 2>&1 && [ ! -x /app/node_modules/.bin/nodemon ]; then
echo "[start-dev] nodemon not found; installing dev deps locally..."
npm ci || npm install
fi
# ===== 5) Start dev server (inspect เปิดไว้บน 9229) =====
echo "[start-dev] Starting dev server (inspect 0.0.0.0:9229, PORT=$PORT)"
NODEMON_BIN="$(command -v nodemon || echo npx nodemon)"
exec sh -lc "$NODEMON_BIN --legacy-watch --watch src --ext js,json,ts --exec 'node --enable-source-maps src/index.js' --inspect=0.0.0.0:9229"