Files
fabric_trade_server/deploy-host-build.sh
T
mohmdsdgandCursor 68f0d45adf Build with temporary Node container so host Node is not required
Use docker run node:22-alpine for npm ci/build, then package via Dockerfile.prebuilt.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 21:19:21 +03:30

44 lines
1.5 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
cd "$(dirname "$0")"
MIRROR="${NPM_REGISTRY:-https://registry.npmmirror.com}"
MIRROR="${MIRROR%/}"
NODE_IMAGE="${NODE_IMAGE:-node:22-alpine}"
echo "==> npm registry: $MIRROR"
echo "==> build with Docker image: $NODE_IMAGE (Node روی خود سرور لازم نیست)"
# آماده‌سازی lockfile برای میرور
sed -i \
-e "s|https://registry.npmjs.org|${MIRROR}|g" \
-e "s|https://mirror.iranserver.com/npm|${MIRROR}|g" \
package-lock.json
# نصب و بیلد داخل یک کانتینر موقت Node (نه داخل docker build)
# شبکه معمولی کانتینر معمولاً از docker build پایدارتر است
docker run --rm \
-v "$PWD":/app \
-w /app \
-e NPM_CONFIG_REGISTRY="$MIRROR" \
"$NODE_IMAGE" \
sh -c "set -eux
npm config set registry '$MIRROR'
npm config set fetch-retries 5
npm config set fetch-retry-mintimeout 20000
npm config set fetch-retry-maxtimeout 120000
npm ci --no-audit --no-fund
npx prisma generate
npm run build
npm prune --omit=dev
npm install prisma ts-node typescript --no-save --no-audit --no-fund --registry='$MIRROR'
"
echo "==> ساخت و اجرای کانتینر API (بدون دانلود npm در بیلد)..."
export RUN_SEED="${RUN_SEED:-true}"
docker compose -f docker-compose.prebuilt.yml up -d --build
echo ""
echo "OK → curl http://127.0.0.1:3000/api/health"
echo "logs → docker compose -f docker-compose.prebuilt.yml logs -f api"