forked from HebaAli48/Ecommerce-DevOps-Project
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlocal_setup.sh
More file actions
100 lines (84 loc) · 2.83 KB
/
local_setup.sh
File metadata and controls
100 lines (84 loc) · 2.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#!/bin/bash
set -e
# Variables
DB_USER_NAME="elegance_****"
DB_PASSWORD="XYQmb***********"
DB_NAME="elegance-**********"
DB_URI="mongodb+srv://elegance_***&appName=Cluster0"
CLOUDINARY_CLOUD_NAME="*********"
CLOUDINARY_API_KEY="***************"
CLOUDINARY_API_SECRET="MT309***************-******"
ENCRYPTION_KEY="my******"
HASHING_COST="10"
backend_port="8000"
frontend_port="80"
# Step 1: Clean up old containers
echo "🚀 Cleaning up old containers..."
docker rm -f backend backend1 backend2 frontend || true
# Step 2: Create Docker network
echo "🔧 Creating Docker network..."
docker network create elegance-net || true
# === BACKEND ===
echo "📦 Installing backend dependencies..."
cd BackEnd
npm install --only=production
cd ..
echo "🐳 Building backend Docker image..."
docker build -t elegance-backend:local -f BackEnd/Dockerfile BackEnd
# === FRONTEND ===
echo "📦 Installing frontend dependencies & building project..."
cd FrontEnd
npm install
npm run build
cd ..
echo "⚙️ Generating default.conf..."
sed 's|${BACKEND_SERVERS}|server backend1:8000 max_fails=3 fail_timeout=30s;\
server backend2:8000 max_fails=3 fail_timeout=30s;|' \
FrontEnd/default.conf.template > FrontEnd/default.conf
echo "🐳 Building frontend Docker image..."
docker build -t elegance-frontend:local -f FrontEnd/Dockerfile FrontEnd
# Step 3: Stop any process using the frontend port
echo "🔴 Stopping any process using port $frontend_port..."
lsof -i :$frontend_port -t | xargs -r sudo kill -9 || true
# Step 3: Stop any process using the frontend port
echo "🔴 Stopping any process using port $backend_port..."
lsof -i :8001 -t | xargs -r sudo kill -9 || true
echo "🔴 Stopping any process using port $backend_port..."
lsof -i :8002 -t | xargs -r sudo kill -9 || true
# Step 4: Run backend container with environment variables
echo "🚀 Running backend container..."
docker run -d \
--name backend1 \
-p "8001:$backend_port" \
--restart always \
--network elegance-net \
-e PORT="$backend_port" \
-e DB_USER_NAME="$DB_USER_NAME" \
-e DB_PASSWORD="$DB_PASSWORD" \
-e DB_NAME="$DB_NAME" \
-e DB_URI="$DB_URI" \
-e HASHING_COST="$HASHING_COST" \
-e ENCRYPTION_KEY="$ENCRYPTION_KEY" \
elegance-backend:local
docker run -d \
--name backend2 \
-p "8002:$backend_port" \
--restart always \
--network elegance-net \
-e PORT="$backend_port" \
-e DB_USER_NAME="$DB_USER_NAME" \
-e DB_PASSWORD="$DB_PASSWORD" \
-e DB_NAME="$DB_NAME" \
-e DB_URI="$DB_URI" \
-e HASHING_COST="$HASHING_COST" \
-e ENCRYPTION_KEY="$ENCRYPTION_KEY" \
elegance-backend:local
# Step 5: Run frontend container
echo "🚀 Running frontend container..."
docker run -d \
--name frontend \
--restart always \
--network elegance-net \
-p "$frontend_port:$frontend_port" \
elegance-frontend:local
echo "✅ Application running at: http://localhost:$frontend_port"