From 82f8d77abe97be8bd3fdf1d3b7d1cde9a5e06af7 Mon Sep 17 00:00:00 2001 From: Christomatt Date: Sat, 31 Jan 2026 06:52:05 +0100 Subject: [PATCH] Fix migrations - include schema.ts and use npm run db:push --- docker/Dockerfile | 3 ++- docker/docker-entrypoint.sh | 37 +++++++++++++++++++++---------------- 2 files changed, 23 insertions(+), 17 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 7251883..79da076 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -64,11 +64,12 @@ COPY --from=builder /app/public ./public COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./ COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static -# Copy drizzle migrations and config +# Copy drizzle migrations, config, and schema (needed for migrations) COPY --from=builder --chown=nextjs:nodejs /app/drizzle ./drizzle COPY --from=builder --chown=nextjs:nodejs /app/drizzle.config.ts ./ COPY --from=builder --chown=nextjs:nodejs /app/package.json ./ COPY --from=builder --chown=nextjs:nodejs /app/package-lock.json ./ +COPY --from=builder --chown=nextjs:nodejs /app/src/db/schema.ts ./src/db/schema.ts # Install drizzle-kit and pg (postgres driver) for migrations # These are needed at runtime for the entrypoint to run migrations diff --git a/docker/docker-entrypoint.sh b/docker/docker-entrypoint.sh index eb207f6..3f99df9 100644 --- a/docker/docker-entrypoint.sh +++ b/docker/docker-entrypoint.sh @@ -1,30 +1,32 @@ #!/bin/sh # Synapsis Docker Entrypoint Script -# Handles database migrations, seeding, and application startup +# Handles database migrations and application startup set -e echo "========================================" echo " Synapsis - Starting Application" echo "========================================" +echo " Time: $(date)" +echo " Working Dir: $(pwd)" +echo " Database URL: ${DATABASE_URL%%:*}://***@***" +echo "========================================" # Function to wait for database wait_for_db() { + echo "" echo "⏳ Waiting for PostgreSQL..." - # Extract connection details from DATABASE_URL - # Format: postgresql://user:password@host:port/database + # Extract host and port from DATABASE_URL DB_HOST=$(echo "$DATABASE_URL" | sed -n 's/.*@\([^:]*\):.*/\1/p') DB_PORT=$(echo "$DATABASE_URL" | sed -n 's/.*:\([0-9]*\)\/.*/\1/p') - - # Default values DB_HOST=${DB_HOST:-postgres} DB_PORT=${DB_PORT:-5432} max_retries=30 retry_count=0 - while ! nc -z "$DB_HOST" "$DB_PORT"; do + while ! nc -z "$DB_HOST" "$DB_PORT" 2>/dev/null; do retry_count=$((retry_count + 1)) if [ $retry_count -ge $max_retries ]; then echo "❌ Failed to connect to database after $max_retries attempts" @@ -41,33 +43,36 @@ wait_for_db() { run_migrations() { echo "" echo "🔄 Running database migrations..." + echo " Current directory: $(pwd)" + echo " Drizzle directory contents:" + ls -la drizzle/ 2>/dev/null || echo " (drizzle dir not found or empty)" - # Run drizzle-kit push to create/update database schema - # This creates tables if they don't exist - npx drizzle-kit push --force 2>&1 || { - echo "⚠️ Migration push returned non-zero (may be already up to date or error)" - echo " Continuing anyway..." + # Run migrations using npm script + # This uses the drizzle.config.ts which should be in the app root + echo " Executing: npm run db:push" + npm run db:push 2>&1 || { + echo "⚠️ Migration command exited with error (may be already up to date)" } - echo "✅ Migration check complete" + echo "✅ Migration step complete" } -# Wait for database to be ready +# Wait for database wait_for_db # Run migrations run_migrations -# Display startup info +# Final startup message echo "" echo "========================================" echo " 🚀 Starting Synapsis Server" echo "========================================" echo " Environment: $NODE_ENV" echo " Port: $PORT" -echo " Database: Connected" +echo " Node Version: $(node --version)" echo "========================================" echo "" -# Execute the main command (passed as arguments) +# Execute the main command exec "$@"