Files
dyolink/backend/docker-entrypoint.sh

76 lines
2.4 KiB
Bash
Raw Normal View History

#!/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 "$@"