44 lines
1.7 KiB
Bash
Executable File
44 lines
1.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
cd "$(dirname "$0")/.."
|
|
|
|
# Clean previous build artifacts before production build.
|
|
mkdir -p .nuxt .output
|
|
find .nuxt -mindepth 1 -maxdepth 1 -exec rm -rf {} + || true
|
|
find .output -mindepth 1 -maxdepth 1 -exec rm -rf {} + || true
|
|
rm -rf node_modules/.cache node_modules/.vite
|
|
|
|
# Install deps (container starts from a clean image).
|
|
# This workspace has mixed Apollo/Nuxt peer graphs; keep install deterministic in Docker.
|
|
npm install --legacy-peer-deps
|
|
|
|
# sharp is a native module and can break when cached node_modules were installed
|
|
# for a different CPU variant (for example arm64v8). Force a local rebuild.
|
|
ARCH="$(uname -m)"
|
|
if [ "$ARCH" = "aarch64" ] || [ "$ARCH" = "arm64" ]; then
|
|
npm rebuild sharp --platform=linux --arch=arm64v8 \
|
|
|| npm rebuild sharp --platform=linux --arch=arm64 \
|
|
|| npm install sharp --platform=linux --arch=arm64v8 --save-exact=false \
|
|
|| npm install sharp --platform=linux --arch=arm64 --save-exact=false
|
|
elif [ "$ARCH" = "x86_64" ] || [ "$ARCH" = "amd64" ]; then
|
|
npm rebuild sharp --platform=linux --arch=x64 \
|
|
|| npm install sharp --platform=linux --arch=x64 --save-exact=false
|
|
else
|
|
npm rebuild sharp || true
|
|
fi
|
|
|
|
# Wait until PostgreSQL is reachable before applying schema.
|
|
until node -e "const u=new URL(process.env.DATABASE_URL||''); const net=require('net'); const s=net.createConnection({host:u.hostname,port:Number(u.port||5432)}); s.on('connect',()=>{s.end(); process.exit(0);}); s.on('error',()=>process.exit(1));" ; do
|
|
echo "Waiting for PostgreSQL..."
|
|
sleep 1
|
|
done
|
|
|
|
npx prisma db push
|
|
|
|
# Run Nuxt in production mode (Nitro server), no dev/preview runtime.
|
|
npm run build
|
|
export NITRO_HOST=0.0.0.0
|
|
export NITRO_PORT=3000
|
|
exec node .output/server/index.mjs
|