Merge pull request #190 from beckn/docker-issue

Add OS-specific Docker installation
This commit is contained in:
prasad-takale-eminds
2024-08-30 16:16:00 +05:30
committed by GitHub
2 changed files with 45 additions and 23 deletions

View File

@@ -49,8 +49,10 @@ Docker compose and docker are extensively used in the installation and running o
### Overall Pre-requisites ### Overall Pre-requisites
- OS supported and test Beckn-ONIX installer are Ubuntu (20.04, 22.04 and 24.04), Debian (12), Amazon Linux 2, Windows with WSL support and MacOS.
- Atleast four virtual servers (EC2 instances) configured on the cloud provider with administrator login (e.g. ssh access) to them. - Atleast four virtual servers (EC2 instances) configured on the cloud provider with administrator login (e.g. ssh access) to them.
- Access to domain name management with ability to create domain-name/subdomains for each of the components. - Access to domain name management with ability to create domain-name/subdomains for each of the components.
- Latest docker version.
- Run the following two commands on all machines where the script is being run for the first time. Login to a new shell for the command to take effect and continue with the installation. Not doing so will result in docker permisssion error - Run the following two commands on all machines where the script is being run for the first time. Login to a new shell for the command to take effect and continue with the installation. Not doing so will result in docker permisssion error
``` ```

View File

@@ -19,42 +19,49 @@ install_package() {
if [ -x "$(command -v apt-get)" ]; then if [ -x "$(command -v apt-get)" ]; then
# APT (Debian/Ubuntu) # APT (Debian/Ubuntu)
if [ "$1" == "docker" ]; then if [ "$1" == "docker" ]; then
docker > /dev/null 2>&1 if ! docker --version > /dev/null 2>&1; then
if [ $? -ne 0 ]; then if [ -f /etc/debian_version ]; then
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null echo "deb [signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
else
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
fi
sudo apt update >/dev/null 2>&1 sudo apt update >/dev/null 2>&1
sudo apt install -y docker-ce docker-ce-cli containerd.io >/dev/null 2>&1 sudo apt install -y docker-ce docker-ce-cli containerd.io >/dev/null 2>&1
sudo usermod -aG docker $USER sudo usermod -aG docker $USER
source ~/.bashrc source ~/.bashrc
command_exists docker sudo systemctl enable docker.service
if [ $? -eq 0 ]; then sudo systemctl restart docker.service
sleep 10
sudo systemctl enable docker.service
sudo systemctl restart docker.service
fi
else else
echo "Docker is already installed." echo "Docker is already installed."
fi fi
else else
if ! dpkg -l | grep -q "^ii $1 "; then if ! dpkg -l | grep -q "^ii $1 "; then
sudo apt-get update >/dev/null 2>&1 sudo apt-get update >/dev/null 2>&1
sudo apt-get install -y $1 > /dev/null 2>&1 sudo apt-get install -y $1 >/dev/null 2>&1
else else
echo "$1 is already installed." echo "$1 is already installed."
fi fi
fi fi
elif [ -x "$(command -v yum)" ]; then elif [ -x "$(command -v yum)" ]; then
# YUM (Red Hat/CentOS) # YUM (Red Hat/CentOS/Amazon Linux)
if [ "$1" == "docker" ]; then if [ "$1" == "docker" ]; then
if ! rpm -qa | grep -q docker-ce; then if ! docker --version > /dev/null 2>&1; then
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo if [ -f /etc/centos-release ]; then
# Install Docker sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker >/dev/null 2>&1 elif [ -f /etc/redhat-release ]; then
sudo systemctl enable docker.service sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo systemctl start docker.service elif grep -q "Amazon Linux release 2" /etc/system-release; then
sudo amazon-linux-extras install docker -y
elif grep -q "Amazon Linux release" /etc/system-release; then
sudo yum install -y docker
fi
sudo yum install -y docker-ce docker-ce-cli containerd.io >/dev/null 2>&1
sudo usermod -aG docker $USER sudo usermod -aG docker $USER
source ~/.bashrc source ~/.bashrc
sudo systemctl enable docker.service
sudo systemctl restart docker.service
else else
echo "Docker is already installed." echo "Docker is already installed."
fi fi
@@ -66,19 +73,32 @@ install_package() {
fi fi
fi fi
elif [ -x "$(command -v amazon-linux-extras)" ]; then elif [ -x "$(command -v amazon-linux-extras)" ]; then
# Amazon Linux 2 # Amazon Linux 2 specific
if ! amazon-linux-extras list | grep -q "^$1 "; then if [ "$1" == "docker" ]; then
sudo amazon-linux-extras install $1 >/dev/null 2>&1 if ! docker --version > /dev/null 2>&1; then
sudo amazon-linux-extras install docker -y >/dev/null 2>&1
sudo systemctl enable docker.service
sudo systemctl start docker.service
sudo usermod -aG docker $USER
source ~/.bashrc
else
echo "Docker is already installed."
fi
else else
echo "$1 is already installed." if ! amazon-linux-extras list | grep -q "$1"; then
sudo amazon-linux-extras install $1 -y >/dev/null 2>&1
else
echo "$1 is already installed."
fi
fi fi
else else
echo "${RED}Unsupported package manager. Please install $1 manually.${NC}" echo "Unsupported package manager. Please install $1 manually."
exit 1 exit 1
fi fi
} }
remove_package(){ remove_package(){
if [ -x "$(command -v apt-get)" ]; then if [ -x "$(command -v apt-get)" ]; then
# APT (Debian/Ubuntu) # APT (Debian/Ubuntu)