CI/CD 的英文全称及核心含义如下,采用结构化方式呈现,便于你在技术文档或配置中规范使用:

缩写部分英文全称中文翻译核心作用
CIContinuous Integration持续集成开发人员频繁将代码合并到主干,通过自动化构建和测试,快速发现集成错误。
CDContinuous Delivery持续交付在 CI 基础上,将代码自动部署到测试/预发布环境,手动确认后发布到生产。
CDContinuous Deployment持续部署持续交付的进阶版,代码通过测试后自动部署到生产环境,无需人工干预。

补充说明

在你的 Jenkins 部署场景中,当前实现的是 CI(持续集成) + CD(持续交付) 的结合:

  1. CI:通过 mvn clean package 完成代码构建与打包。
  2. CD:通过脚本自动将前后端文件部署到服务器,但未实现生产环境的全自动发布(仍需触发 Jenkins 任务)。

极简版 Shell 脚本部署 Docker MySQL(root/root)

以下脚本仅保留核心功能:部署 MySQL 容器、设置 root 密码为 root,无额外自定义配置,开箱即用,适配 Rocky Linux/CentOS 系统。

一、完整脚本(保存为 deploy-mysql-simple.sh
#!/bin/bash
set -e  # 错误立即退出

# ==================== 核心配置(仅需改这里)====================
MYSQL_VERSION="8.0"          # MySQL版本
CONTAINER_NAME="mysql-ivos"  # 容器名
MYSQL_PORT="3306"            # 映射端口
MYSQL_ROOT_PWD="root"        # root密码(固定为root)
MYSQL_DATA_DIR="/opt/mysql/data"  # 数据持久化目录

# ==================== 1. 检查Docker(未安装则自动装)====================
echo -e "\n===== 1/4 检查Docker环境 ====="
if ! command -v docker &> /dev/null; then
    echo "Docker未安装,开始自动安装..."
    sudo dnf remove -y docker* &> /dev/null
    sudo dnf install -y yum-utils device-mapper-persistent-data lvm2 &> /dev/null
    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo &> /dev/null
    sudo dnf install -y docker-ce docker-ce-cli containerd.io &> /dev/null
    sudo systemctl start docker && sudo systemctl enable docker
    echo "✅ Docker安装完成"
else
    echo "✅ Docker已安装:$(docker --version | awk '{print $3}' | cut -d',' -f1)"
fi

# ==================== 2. 清理旧容器(避免冲突)====================
echo -e "\n===== 2/4 清理旧容器 ====="
if [ $(docker ps -a | grep -c $CONTAINER_NAME) -gt 0 ]; then
    sudo docker stop $CONTAINER_NAME &> /dev/null
    sudo docker rm $CONTAINER_NAME &> /dev/null
    echo "✅ 旧容器 $CONTAINER_NAME 已删除"
else
    echo "✅ 无旧容器,无需清理"
fi

# ==================== 3. 准备数据目录+拉取镜像 ====================
echo -e "\n===== 3/4 准备部署环境 ====="
# 创建数据目录(持久化关键)
sudo mkdir -p $MYSQL_DATA_DIR
sudo chmod -R 777 $MYSQL_DATA_DIR

# 拉取MySQL镜像
if [ $(docker images | grep -c mysql:$MYSQL_VERSION) -eq 0 ]; then
    echo "拉取MySQL $MYSQL_VERSION 镜像..."
    sudo docker pull mysql:$MYSQL_VERSION
fi
echo "✅ 环境准备完成"

# ==================== 4. 启动MySQL容器 ====================
echo -e "\n===== 4/4 启动MySQL容器 ====="
sudo docker run -d \
    --name $CONTAINER_NAME \
    --restart=always \
    -p $MYSQL_PORT:3306 \
    -v $MYSQL_DATA_DIR:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PWD \
    mysql:$MYSQL_VERSION

# 等待启动(避免校验过早失败)
sleep 8

# 验证启动状态
if [ $(docker ps | grep -c $CONTAINER_NAME) -gt 0 ]; then
    echo -e "\n🎉 MySQL部署成功!"
    echo "🔹 连接信息:主机端口=$MYSQL_PORT | 用户名=root | 密码=root"
    echo "🔹 数据目录:$MYSQL_DATA_DIR"
else
    echo -e "\n❌ MySQL启动失败!日志:"
    sudo docker logs $CONTAINER_NAME
    exit 1
fi
二、使用步骤(一键执行)
# 1. 创建并编辑脚本
vim deploy-mysql-simple.sh

# 2. 添加执行权限
chmod +x deploy-mysql-simple.sh

# 3. 运行脚本(sudo避免权限问题)
sudo ./deploy-mysql-simple.sh
三、快速验证连接
# 进入容器内连接MySQL
sudo docker exec -it mysql-ivos mysql -uroot -proot

# 验证成功会进入MySQL命令行,输入以下命令测试
show databases;  # 能看到默认数据库即表示正常
exit;            # 退出MySQL

总结

  1. 核心配置:仅保留 root 密码 root,无额外数据库/用户配置,满足基础使用需求。
  2. 关键保障:数据目录 /opt/mysql/data 持久化,容器删除/重启数据不丢失;容器开机自启。
  3. 简化点:去掉字符集配置、自定义用户等非必需项,仅保留最核心的部署逻辑。

如果需要开放 3306 端口供远程连接(如本地 Navicat 访问),执行以下命令:

sudo firewall-cmd --add-port=3306/tcp --permanent
sudo firewall-cmd --reload

更多推荐