full_container_scheme/docker-compose-yaml/base.sh

94 lines
2.6 KiB
Bash

#!/usr/bin/env bash
###
# @Author: Logan.Li
# @Gitee: https://gitee.com/attacker
# @email: admin@attacker.club
# @Date: 2023-10-28 00:01:57
# @LastEditTime: 2023-10-28 01:30:56
# @Description:
###
CURRENT_DIR=$(
cd "$(dirname "$0")"
pwd
)
function logger() {
case "$1" in
"error" | "red")
echo -e "\e[1;31m$2\e[0m"
echo "$2" >>${CURRENT_DIR}/install.log
exit 1
;;
"warning" | "yellow")
echo -e "\e[1;33m$2\e[0m"
echo "$2" >>${CURRENT_DIR}/install.log
;;
"success" | "green")
echo -e "\e[1;32m$2\e[0m"
echo "$2" >>${CURRENT_DIR}/install.log
;;
"info" | "blue")
echo -e "\e[1;34m$2\e[0m"
echo "$2" >>${CURRENT_DIR}/install.log
;;
esac
}
# 判断是否root用户
if [ $(id -u) -ne 0 ]; then
logger error "########## This script must be run as root !!! ##########"
fi
# 环境检查
echo "time: $(date)"
if which getenforce && [ $(getenforce) == "Enforcing" ]; then
logger info "... 关闭 SELINUX"
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
fi
>${CURRENT_DIR}/install.log
logger info "======================= 开始安装 =======================" 2>&1 | tee -a ${CURRENT_DIR}/install.log
logger info "检查 是否存在离线包 [offline.tar.gz]"
if [ -f ${CURRENT_DIR}/offline.tar.gz ]; then
tar zxf offline.tar.gz
chmod +x docker-install.sh && ./docker-install.sh
logger success "离线docker 安装成功"
\cp docker-compose /usr/local/sbin/docker-compose
chmod +x /usr/local/sbin/docker-compose
logger success "离线ocker-compose 安装成功"
fi
# 检查是否已经安装 Docker
if [ -x "$(command -v docker)" ]; then
logger info "Docker 已经安装"
else
# 下载 Docker 二进制安装包
curl -fsSL https://get.docker.com | sh
logger success "安装 Docker"
fi
# 检查是否已经安装 Docker Compose
if [ -x "$(command -v docker-compose)" ]; then
logger info "Docker Compose 已经安装"
else
# 下载 Docker Compose 二进制安装包
curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/sbin/docker-compose
# 设置可执行权限
chmod +x /usr/local/sbin/docker-compose
docker-compose version # 查看docker-compose版本
logger success "安装 Docker Compose"
fi
# 检查是否有离线镜像
if [ -f ${CURRENT_DIR}/image.tar.gz ]; then
logger info "检查到离线镜像 [image.tar.gz]"
cat image.tar.gz | gzip -d | docker load
logger success "完成镜像恢复"
fi
logger info "开始服务部署 ... [xx.yml]"