docker-compose安装mysql脚本样例

该博客详细介绍了如何自动化安装和配置Docker及Docker-compose,确保Linux内核和机器位数满足要求,并提供了安装脚本。同时,文章还涵盖了MySQL的安装过程,包括设置安装路径、输入端口和root密码,以及使用docker-compose启动和管理MySQL服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#环境需求
1)安装docker必须是64位机器
2)安装docker时liunx的内核版本必须是3.10或更高版本
3)docker的版本默认是19.03.9
4)mysql的版本默认是5.7
5)docker-compose的版本默认是1.27.4
#结构

#-----------------------|mysql
#-----------------------------|conf (数据库my.cnf配置)
#-----------------------------|data
#-----------------------------|docker-compose.yml
#-----------------------|images
#------------------------------|mysql-5.7.zip
#-----------------------|package
#-------------------------------|docker-19.03.9.tgz
#-------------------------------|docker.service
#-------------------------------|docker-compose-1.27.4
#-----------------------|install_autodeploy_docker_compose.sh
#-----------------------|readme.txt

#安装docker环境(包含检查docker安装版本)

function installDocker(){  
  echo "开始安装docker"
  install_docker_version=`docker -v `
  if [ $? -eq 0 ]; then
       install_docker_version=`docker -v | awk -F',' '{print $1}' | awk '{print $3}'`
       echo "检查到docker已安装,安装的版本:$install_docker_version"
       #docker的版本必须大于等于1.13.0
       docker_min_version=1.13.0
       if [ `expr $install_docker_version \>= $docker_min_version` -eq 0 ];then
           echo "docker的版本必须是1.13.0或更高版本"
           exit 1   
       fi   
  else
       #检查liunx的内核版本是否是3.10或更高版本
       liunx_kernel_version=`uname -r |awk -F'-' '{print $1}'`
       echo "liunx的内核版本为:$liunx_kernel_version"
       min_version=3.10.0
       if [ `expr $liunx_kernel_version \>= $min_version` -eq 0 ];then
           echo "安装docker时liunx的内核版本必须是3.10或更高版本"
           exit 1   
       fi
       #liunx必须是64位机器
       liunx_bit=`getconf LONG_BIT`   
       if [ $liunx_bit -ne 64 ];then
           echo "liunx机器位数为:$liunx_bit, 安装docker必须是64位机器"
           exit 1
       fi   
       echo "解压$docker_version包"
       tar -xf ./package/$docker_version
       echo "将docker目录移到/usr/bin目录下"
       /bin/cp -f ./docker/* /usr/bin/
       echo "将docker.service 移到/etc/systemd/system/ 目录"
       /bin/cp -f ./package/docker.service /etc/systemd/system/
       rm -rf ./docker
       echo "添加文件权限"
       chmod +x /etc/systemd/system/docker.service
       echo "重新加载配置文件"
       systemctl daemon-reload
       echo "启动docker"
       systemctl start docker
       echo "设置开机自启"
       systemctl enable docker.service
       docker -v
       if [ $? -eq 0 ]; then
           echo "docker安装成功"
       else
           echo "docker安装失败"
           exit 1
      fi
  fi
}

#安装docker-compose

function installDockerCompose(){
  echo "开始安装docker-compose环境"
  install_docker_compose_version=`docker-compose -v `
  if [ $? -eq 0 ]; then
       echo "检查到docker-compose已安装,安装的版本:$install_docker_compose_version"
  else
       echo "将$docker_compose_version 移到/usr/local/bin/ 目录 "
       /bin/cp -f ./package/$docker_compose_version /usr/local/bin/docker-compose
       echo "docker-compose添加权限"
       chmod +x  /usr/local/bin/docker-compose
       docker-compose -v
       if [ $? -eq 0 ]; then
           echo "docker-compose安装成功"
       else
            echo "docker-compose安装失败"
            exit 1
       fi
  fi
}

#安装mysql

function installMysql(){
   #mysql的安装路径
   MYSQLPATH=
   echo "开始安装mysql"
   #直接执行步骤3
   if [ -z "$WORKPATH" ];then
      read -p "mysql的安装路径[默认值:/devops/autodeploy/mysql]:" MYSQLPATH
      MYSQLPATH=${MYSQLPATH:-/devops/autodeploy/mysql}
      echo "mysql安装路径:$MYSQLPATH"
      read -p "安装时会覆盖该路径,确认是否继续执行[y/n]:" FLAG
      FLAG=${FLAG:-n}
      if [ "$FLAG"x != "y"x ];then
           echo "停止执行"
           exit 1
      fi
      #拷贝mysql配置到安装路径
      if [ ! -d $MYSQLPATH ];then
         mkdir -p $MYSQLPATH
      fi
      /bin/cp -rf ./mysql/*  $MYSQLPATH
      #清除root密码
      rootPwd=
   else
     MYSQLPATH=$WORKPATH/mysql
     echo "mysql的安装路径:$MYSQLPATH"
   fi
   echo "导入mysql镜像"
   docker load -i ./images/$mysql_images_name
   if [ $? -eq 0 ]; then
     echo "mysql镜像导入成功"
   else
     echo "mysql镜像导入失败"
     exit 1
   fi

   #mysql启动参数配置
   read -p "mysql对外端口[默认值:3306]:" mysqlPort
   mysqlPort=${mysqlPort:-3306}
   while [ -z "$rootPwd" ]
   do
       read -p "mysql的root密码:" rootPwd
   done

   #将配置写入到env文件中
   rm -rf $MYSQLPATH/.env
   echo MYSQL_ROOT_PASSWORD=$rootPwd >> $MYSQLPATH/.env
   echo MYSQL_DATABASE=$mysqlName >> $MYSQLPATH/.env
   echo MYSQL_PATH=$MYSQLPATH >> $MYSQLPATH/.env
   echo MYSQL_PORT=$mysqlPort >> $MYSQLPATH/.env

   path=`pwd`
   cd $MYSQLPATH
   #修改docker-compose的server名称,支持同一机器上可以运行多个服务
   mysql_server_name=mysqlServer_$mysqlPort
   sed -i "s/MYSQL_SERVER_NAME/$mysql_server_name/g" docker-compose.yml
   #修改network名称
   mysql_network_name=network_$mysqlPort
   sed -i "s/MYSQL_NETWORK_NAME/$mysql_network_name/g" docker-compose.yml
   echo "启动mysql"
   docker-compose up -d

   #判断启动状态
   k=0
   for((i=1;i<=6;i++));
   do
     install_mysql_status=`docker-compose ps  | awk '{print $4}' | sed -n '$p' `
     if  [ "$install_mysql_status"x = "Up"x ]; then
            #k++
            k=$(( $k+1 ))
            echo "mysql正在启动中..."
            #连续3次成功才判断是成功
            if [ $k -eq 3 ];then
                   echo -e "\033[32m mysql安装成功 \033[0m"
                   echo "********************************************"
                   echo "mysql配置"
                   echo "安装路径:$MYSQLPATH"
                   echo "访问端口:$mysqlPort"
                   echo "root的密码:$rootPwd"
                   echo "********************************************"
                   cd $path
                   return 0
            fi
     else
            k=0
            echo "mysql正在启动中..."
     fi
     sleep 5
   done
   echo "mysql安装失败"
   cd $path
   exit 1
}

mysql:docker-compose.yml

version: '3'
services:
  MYSQL_SERVER_NAME:
   container_name: mysqlServer_${MYSQL_PORT}
   image: mysql:5.7
   volumes:
    # mysql数据的映射路径
    - ${MYSQL_PATH}/data:/var/lib/mysql
    # mysql配置
    - ${MYSQL_PATH}/conf/my.cnf:/etc/my.cnf
    # mysql初始化
    #- ${WORKPATH}/mysql/init:/docker-entrypoint-initdb.d/
    # 错误日志
    #- ${WORKPATH}/mysql/log:/var/log/mysql/error.log
   environment:
    # 数据库实例
    MYSQL_DATABASE: ${MYSQL_DATABASE}
    MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
    #MYSQL_USER: ${MYSQL_USER}
    #MYSQL_PASS: ${MYSQL_PASS}
    TZ: "Asia/Shanghai"
   ports:
    - "${MYSQL_PORT}:3306"
   restart: always
   networks:
    - MYSQL_NETWORK_NAME
networks:
  MYSQL_NETWORK_NAME:
    driver: bridge

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值