@setlocal
@echo off
setlocal enabledelayedexpansion
REM program : win_mysql_docker_start.sh
REM author : wangqijia@youzan.com
REM   date : 2020-05-20
REM version : 0.0.0.1
REM 声明采用UTF-8编码
chcp 65001

set DB_NAME=""
set SHUTDOWN_FLAG=0

:: 解析参数
if "%1"=="-h"  (
echo Usage:
echo -h: 打印帮助信息; 
echo -s: 停止本地mysql容器实例;
echo -n: 指定创建数据库的名称;  
goto :succ
)

if "%1"=="-n" (
set DB_NAME="%2"
echo 待创建的数据库名为：%DB_NAME%
)

if "%1"=="-s" set SHUTDOWN_FLAG=1

:: 检测安装Dockers信息
docker -v
if !errorlevel! == 0 (
echo 检测到已安装Docker!!
) else (
echo 检测到尚未安装Docker，请先安装Dockers
goto :fail
)

:: 检查Docker版本信息
set MIN_DOCKER_VERSION="17.03"
for /f "tokens=3 delims= " %%i in ('docker -v') do ( set docker_ver=%%i)
set docker_version=!docker_ver:~0,-1!

if !docker_version! geq %MIN_DOCKER_VERSION% (
echo 当前Docker版本：!docker_version!
) else (
echo 当前Docker版本太低，请先升级，最低版本要求: %MIN_DOCKER_VERSION%
goto :fail
)

if !SHUTDOWN_FLAG! equ 1 (
docker ps | find "yz-mysql"
if !errorlevel! == 0 (
docker stop yz-mysql
echo mysql组件容器服务已停止！
) else (
echo mysql本地组件容器服务尚未启动！
)
goto :succ
)

:: 安装并启动mysql
echo 准备启动本地mysql容器服务实例！

:: 拉取mysql镜像
docker images | find "hub-mirror.c.163.com/library/mysql" | find "5.6"
if !errorlevel! neq 0 (
echo 本地mysql镜像不存在，请先下载mysql镜像。
goto :fail
)

:: 检查mysql容器服务是否已启动
docker ps | find "yz-mysql"
if !errorlevel! == 0 (
echo mysql组件容器服务已启动！
) else (
:: 检查mysql容器是否已创建
docker ps -a | find "yz-mysql"
if !errorlevel! == 0 (
echo mysql组件容器服务已创建，尚未启动！
:: 重启mysql容器
docker start yz-mysql
if !errorlevel! == 0 (
echo mysql组件容器服务重新启动成功！
) else (
echo mysql组件容器启动失败！。
goto :fail
)

) else (
::创建并启动mysql组件容器
echo 准备创建并启动mysql组件容器服务...
docker run -d --name yz-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 hub-mirror.c.163.com/library/mysql:5.6
if !errorlevel! == 0 (
echo 创建并启动mysql组件容器成功！！！
) else (
echo mysql组件容器创建并启动失败！
goto :fail
)
)
)

:: 等待10s
ping -n 10 127.0.0.1 > nul

echo 检查mysql容器是否成功...
for /l %%i in (1, 1, 10) do (
echo try %%i
for /f "delims= " %%j in ( 'docker inspect -f "{{.Id}}" yz-mysql' ) do ( set yz_mysql_id=%%j )
echo !yz_mysql_id!
docker exec -t !yz_mysql_id! mysql -h localhost -uroot -p123456 -e "show databases;"
if !errorlevel! == 0 (
echo mysql容器服务检测OK！！！
:: 创建应用数据库
docker exec -t !yz_mysql_id! mysql -h localhost -uroot -p123456 -e "Create Database If Not Exists %DB_NAME% Character Set utf8mb4;"
if !errorlevel! == 0 (
echo mysql创建应用数据库%DB_NAME%成功！！！
) else (
echo mysql创建应用数据库%DB_NAME%失败！
goto :fail
)
goto :mysql_done
) 
:: 等待3s
ping -n 3 127.0.0.1 > nul
if %%i equ 6 (
echo mysql组件服务检测失败！
goto :fail
)
)

:mysql_done
:: 输出mysql启动信息
echo mysql  Ver 14.14 Distrib 5.6.47
echo mysql连接信息：host主机:localhost，端口:3306，密码：123456
echo 创建应用数据库：%DB_NAME%
echo 连接串: mysql -h localhost -uroot -p123456

:succ
exit /B 0

:fail
exit /B 1

:: pause
