脚本自动化部署springboot(Centos)

作者:Keysqiu
创建时间:2025-11-30 18:19:01 最后一次修改时间:2025-12-02 18:40:19
Categories: Tags:

如果报-bash: ./xxx.sh: /bin/sh^M: bad interpreter: No such file or directory

请参考bad interpreter,No such file or directory

deploy_software.sh(安装软件)

#!/usr/bin/bash
echo -e "\n\n\n\n"
echo "脚本开始执行=======================================";
# 检测git
if !(command -v git >/dev/null)
then
    echo -e "\n\n\n\n"
    echo "系统没有安装git,开始安装git=================";
    yum install git -y
    echo "安装git结束=================================";
fi
# 检测java
if !(command -v java >/dev/null)
then
    echo -e "\n\n\n\n"
    echo "系统没有安装java,开始安装java================";
    yum install java -y
    echo "安装java结束=================================";
fi
# 检测expect
if !(command -v expect >/dev/null)
then
    echo -e "\n\n\n\n"
    echo "系统没有安装expect,开始安装expect================";
    yum install expect -y
    echo "安装expect结束=================================";
fi
# 检测docker
if !(command -v docker >/dev/null)
then
    echo -e "\n\n\n\n"
    echo "系统没有安装docker,开始安装docker================";
    # 添加docker 的yum源
    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    # 清除docker 的yum源缓存
    yum clean all
    # 重新加载docker 的yum源
    yum makecache
    #安装docker
    yum -y install-docker-ce
    #启动docker
    systemctl start docker
    #设置开机自动启动docker
    systemctl enable docker
    echo "安装docker结束=================================";
fi
echo -e "\n\n\n\n"
echo "脚本执行结束=======================================";

安装完以上的之后还要配置Git

参照git安装里面的1.3即可,需要注意的是,生成的ssh公钥在==/root/.ssh/==里面,用以下命令查看

cat /root/.ssh/id_rsa.pub

安装完以上的之后还要安装Maven

Linux安装maven指定版本

deploy_springboot.sh(部署服务)

#!/usr/bin/bash
#配置代码仓库用户名
git_username="13197630087"
#配置代码仓库密码
git_password="qqs20020906"
#项目名字
project_name="vue_springboot"
project_name_1="springboot"
#代码仓库路径,.git的那个链接
git_path="git@gitee.com:qiuqingsheng/vue_springboot.git"
#主机端口
esc_port="9090"
#Java服务端口,也是docker容器端口
docker_port="9090"
echo -e "\n\n\n\n"
echo "脚本开始执行=======================================";
echo "开始清除之前项目文件=======================================";
rm -rf $project_name
echo "清除之前项目文件结束=======================================";
echo -e "\n\n\n\n"
echo "开始克隆代码=======================================";
/usr/bin/expect <<EOF
#这里意味着bash脚本中嵌套着expect脚本
    set timeout -1
    spawn git clone ${git_path}
    expect {
        "Username*:"{send "$git_username\r";exp_continue}
        "Password*:"{send "$git_password"}    
    }
    expect eof
EOF
echo "克隆代码成功=======================================";
echo -e "\n\n\n\n"
echo "开始进入项目目录=======================================";
cd ${project_name}
echo "进入项目目录结束=======================================";
echo -e "\n\n\n\n"
echo "开始构建项目,打包jar=======================================";
mvn clean package -Dmaven.test.skip=true
echo "构建项目结束=======================================";
echo -e "\n\n\n\n"
echo "开始制作docker镜像=======================================";
docker build -t $project_name_1 ./
echo "制作docker镜像结束=======================================";
echo -e "\n\n\n\n"
echo -e "\n\n\n\n"
echo "开始部署服务=======================================";
#停止正在运行的docker容器
docker stop $project_name_1
#删除正在运行的docker容器
docker rm $project_name_1
#启动运行docker容器
docker run -d --name $project_name_1 -p $esc_port:$docker_port $project_name_1
echo "部署服务结束=======================================";
echo -e "\n\n\n\n"