43 lines
1.4 KiB
Bash
43 lines
1.4 KiB
Bash
#!/bin/sh
|
|
# KoolTap Production Deploy
|
|
# Usage: ./scripts/deploy.sh "My Venue" admin@myvenue.com password
|
|
|
|
VENUE_NAME="${1:-${SETUP_VENUE_NAME}}"
|
|
ADMIN_EMAIL="${2:-${SETUP_ADMIN_EMAIL}}"
|
|
ADMIN_PASSWORD="${3:-${SETUP_ADMIN_PASSWORD}}"
|
|
|
|
if [ -z "$VENUE_NAME" ] || [ -z "$ADMIN_EMAIL" ] || [ -z "$ADMIN_PASSWORD" ]; then
|
|
echo "Usage: $0 \"Venue Name\" admin@example.com password"
|
|
echo " or: SETUP_VENUE_NAME=... SETUP_ADMIN_EMAIL=... SETUP_ADMIN_PASSWORD=... $0"
|
|
exit 1
|
|
fi
|
|
|
|
echo "=== Deploying KoolTap ==="
|
|
echo " Venue: $VENUE_NAME"
|
|
echo " Admin: $ADMIN_EMAIL"
|
|
echo ""
|
|
|
|
# Build and start containers
|
|
docker compose -f docker-compose.prod.yml up --build -d || { echo "Deploy failed"; exit 1; }
|
|
|
|
# Wait for API to be ready
|
|
echo "Waiting for API..."
|
|
until docker compose -f docker-compose.prod.yml exec api sh -c "node -e 'require(\"http\").get(\"http://localhost:3001/api/v1/health\",r=>{let b=\"\";r.on(\"data\",c=>b+=c);r.on(\"end\",()=>process.exit(b.includes(\"\\\"status\\\":\\\"ok\\\"\")?0:1))})'" 2>/dev/null; do
|
|
sleep 2
|
|
done
|
|
echo "✓ API is ready"
|
|
|
|
# Seed the database
|
|
echo ""
|
|
echo "Seeding database..."
|
|
docker compose -f docker-compose.prod.yml exec api sh -c "
|
|
SETUP_VENUE_NAME='$VENUE_NAME' \
|
|
SETUP_ADMIN_EMAIL='$ADMIN_EMAIL' \
|
|
SETUP_ADMIN_PASSWORD='$ADMIN_PASSWORD' \
|
|
node prisma/setup.js
|
|
" || { echo "Seed failed"; exit 1; }
|
|
|
|
echo ""
|
|
echo "=== Done ==="
|
|
echo " Dashboard: https://kooltap.com"
|
|
echo " Login: $ADMIN_EMAIL / $ADMIN_PASSWORD" |