极简版 Shell 脚本部署 Docker MySQL(root/root)
·
CI/CD 的英文全称及核心含义如下,采用结构化方式呈现,便于你在技术文档或配置中规范使用:
| 缩写部分 | 英文全称 | 中文翻译 | 核心作用 |
|---|---|---|---|
| CI | Continuous Integration | 持续集成 | 开发人员频繁将代码合并到主干,通过自动化构建和测试,快速发现集成错误。 |
| CD | Continuous Delivery | 持续交付 | 在 CI 基础上,将代码自动部署到测试/预发布环境,手动确认后发布到生产。 |
| CD | Continuous Deployment | 持续部署 | 持续交付的进阶版,代码通过测试后自动部署到生产环境,无需人工干预。 |
补充说明
在你的 Jenkins 部署场景中,当前实现的是 CI(持续集成) + CD(持续交付) 的结合:
- CI:通过
mvn clean package完成代码构建与打包。 - 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
总结
- 核心配置:仅保留 root 密码
root,无额外数据库/用户配置,满足基础使用需求。 - 关键保障:数据目录
/opt/mysql/data持久化,容器删除/重启数据不丢失;容器开机自启。 - 简化点:去掉字符集配置、自定义用户等非必需项,仅保留最核心的部署逻辑。
如果需要开放 3306 端口供远程连接(如本地 Navicat 访问),执行以下命令:
sudo firewall-cmd --add-port=3306/tcp --permanent
sudo firewall-cmd --reload
更多推荐


所有评论(0)