- Backend: NestJS with Docker - Frontend: Next.js with Docker - Nginx configuration for reverse proxy - PostgreSQL setup - Docker compose for orchestration - Development environment configuration
76 lines
2.4 KiB
Bash
76 lines
2.4 KiB
Bash
#!/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 "$@" |