-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinstall.sh
More file actions
127 lines (111 loc) · 3.49 KB
/
install.sh
File metadata and controls
127 lines (111 loc) · 3.49 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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#!/bin/bash
# Detect OS
if [ -f /etc/os-release ]; then
. /etc/os-release
OS=$NAME
VERSION=$VERSION_ID
else
echo "Cannot detect OS, exiting..."
exit 1
fi
# Define credentials
MONGO_USERNAME="admin"
MONGO_PASSWORD="SmartHirink@2024"
RABBITMQ_USERNAME="admin"
RABBITMQ_PASSWORD="SmartHirink@2024"
# Update package list
case $OS in
"Ubuntu")
PKG_MANAGER="apt-get"
DOCKER_REPO_URL="https://download.docker.com/linux/ubuntu"
;;
"Debian GNU/Linux")
PKG_MANAGER="apt-get"
DOCKER_REPO_URL="https://download.docker.com/linux/debian"
;;
*)
echo "Unsupported OS: $OS"
exit 1
;;
esac
sudo $PKG_MANAGER update
# Install poppler-utils
sudo $PKG_MANAGER install -y poppler-utils
# Check if Python is installed
if ! command -v python3 &> /dev/null
then
echo "Python3 not found, installing..."
sudo $PKG_MANAGER install -y python3 python3-pip
else
echo "Python3 is already installed"
fi
# Check if uv is installed
if ! command -v uv &> /dev/null
then
echo "uv not found, installing..."
curl -LsSf https://astral.sh/uv/install.sh | sh
export PATH="$HOME/.cargo/bin:$PATH"
else
echo "uv is already installed"
fi
# Install project dependencies
uv sync
# Check if Docker is installed
if ! command -v docker &> /dev/null
then
echo "Docker not found, installing..."
# Install dependencies
sudo $PKG_MANAGER install -y apt-transport-https ca-certificates curl gnupg
# Add Docker's official GPG key
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL $DOCKER_REPO_URL/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Add Docker repository based on OS
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] $DOCKER_REPO_URL \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Update package list and install Docker
sudo $PKG_MANAGER update
sudo $PKG_MANAGER install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
else
echo "Docker is already installed"
fi
# Pull and run MongoDB and Redis containers if not already running
if [ ! "$(sudo docker ps -q -f name=mongodb)" ]; then
if [ "$(sudo docker ps -aq -f status=exited -f name=mongodb)" ]; then
# Cleanup
sudo docker rm mongodb
fi
sudo docker run -d --name mongodb \
-p 27017:27017 \
-e MONGO_INITDB_ROOT_USERNAME=$MONGO_USERNAME \
-e MONGO_INITDB_ROOT_PASSWORD=$MONGO_PASSWORD \
mongo
else
echo "MongoDB container is already running"
fi
if [ ! "$(sudo docker ps -q -f name=redis)" ]; then
if [ "$(sudo docker ps -aq -f status=exited -f name=redis)" ]; then
# Cleanup
sudo docker rm redis
fi
sudo docker run -d --name redis -p 6379:6379 redis
else
echo "Redis container is already running"
fi
# Pull and run RabbitMQ container if not already running
if [ ! "$(sudo docker ps -q -f name=rabbitmq)" ]; then
if [ "$(sudo docker ps -aq -f status=exited -f name=rabbitmq)" ]; then
# Cleanup
sudo docker rm rabbitmq
fi
sudo docker run -d --name rabbitmq \
-p 5672:5672 -p 15672:15672 \
-e RABBITMQ_DEFAULT_USER=$RABBITMQ_USERNAME \
-e RABBITMQ_DEFAULT_PASS=$RABBITMQ_PASSWORD \
rabbitmq:3-management
else
echo "RabbitMQ container is already running"
fi
echo "Installation complete"