improvement: docker infrastructure overhauled.
This commit is contained in:
@@ -1,76 +1,36 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
# ============================================
|
||||
# DOCKER ENTRYPOINT SCRIPT
|
||||
# This script runs BEFORE the application starts
|
||||
# ============================================
|
||||
echo "=========================================="
|
||||
echo " Dyolink Backend - Docker Entrypoint"
|
||||
echo "=========================================="
|
||||
|
||||
# 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}"
|
||||
echo "Running in PRODUCTION mode"
|
||||
echo "Running database migrations..."
|
||||
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}"
|
||||
echo "Running in DEVELOPMENT mode"
|
||||
echo "Syncing database schema..."
|
||||
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
|
||||
|
||||
if [ "$NODE_ENV" != "production" ]; then
|
||||
if [ -f "prisma/seed.ts" ] || [ -f "prisma/seed.js" ]; then
|
||||
echo "Running database seed..."
|
||||
npx prisma db seed
|
||||
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}"
|
||||
echo "Verifying database connection..."
|
||||
if ! echo "SELECT 1" | npx prisma db execute --stdin --schema prisma/schema.prisma >/dev/null 2>&1; then
|
||||
echo "Cannot connect to database or execute query."
|
||||
exit 1
|
||||
fi
|
||||
echo "Database connection OK"
|
||||
|
||||
# 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}"
|
||||
echo "Starting Dyolink Backend..."
|
||||
echo " Environment: ${NODE_ENV:-development}"
|
||||
echo " Port: ${PORT:-3000}"
|
||||
|
||||
# Execute the main command (passed as CMD)
|
||||
exec "$@"
|
||||
exec "$@"
|
||||
|
||||
Reference in New Issue
Block a user