#!/bin/sh set -e # ============================================ # DOCKER ENTRYPOINT SCRIPT # This script runs BEFORE the application starts # ============================================ # Colors for logging (optional, for better readability) RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color echo "${GREEN}========================================${NC}" echo "${GREEN} Dyolink Backend - Docker Entrypoint ${NC}" echo "${GREEN}========================================${NC}" # Check if we're in development or production if [ "$NODE_ENV" = "production" ]; then echo "${GREEN}Running in PRODUCTION mode${NC}" # Run database migrations echo "${YELLOW}Running database migrations...${NC}" npx prisma migrate deploy # Check if migrations were successful if [ $? -eq 0 ]; then echo "${GREEN}✓ Database migrations completed successfully${NC}" else echo "${RED}✗ Database migrations failed!${NC}" exit 1 fi else echo "${YELLOW}Running in DEVELOPMENT mode${NC}" # In development, we might want to push schema instead of migrations echo "${YELLOW}Syncing database schema...${NC}" npx prisma db push if [ $? -eq 0 ]; then echo "${GREEN}✓ Database schema synced successfully${NC}" else echo "${RED}✗ Database schema sync failed!${NC}" exit 1 fi fi # Optional: Run seed script if it exists and NODE_ENV is not production if [ "$NODE_ENV" != "production" ] && [ -f "prisma/seed.js" ]; then echo "${YELLOW}Running database seed...${NC}" npx prisma db seed echo "${GREEN}✓ Database seeded successfully${NC}" fi # Verify database connection echo "${YELLOW}Verifying database connection...${NC}" npx prisma db execute --file /dev/null --schema prisma/schema.prisma 2>/dev/null if [ $? -eq 0 ]; then echo "${GREEN}✓ Database connection verified${NC}" else echo "${RED}✗ Cannot connect to database!${NC}" exit 1 fi # Print application information echo "${GREEN}========================================${NC}" echo "${GREEN}Starting Dyolink Backend Application...${NC}" echo "${GREEN} • Environment: ${NODE_ENV:-development}${NC}" echo "${GREEN} • Port: ${PORT:-3000}${NC}" echo "${GREEN} • Database: ${DATABASE_URL%%@*}@***${NC}" echo "${GREEN}========================================${NC}" # Execute the main command (passed as CMD) exec "$@"