单体部署②——MySQL更新工具


# 单体部署②——MySQL更新工具

Tips

本镜像主要是为了跟随HOJ主仓库更新,使用固定镜像来检查是否有更新,以达到MySQL数据库的平滑升级

# 一、用已有的HOJ镜像部署

可以直接在已有的docker-compose.yml添加以下模块即可,本容器检查完是否有更新就会正常退出

  hoj-mysql-checker:
    image: registry.cn-shenzhen.aliyuncs.com/hcode/hoj_database_checker
    container_name: hoj-mysql-checker
    depends_on:
      - hoj-mysql
    links:
      - hoj-mysql:mysql
    environment:
      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-hoj123456} # mysql的数据库密码
1
2
3
4
5
6
7
8
9

# 二、自己打包镜像部署

首先 先下载hoj-deploy (opens new window) 然后进入对应的镜像打包文件夹

git clone https://gitee.com/himitzh0730/hoj-deploy.git && cd hoj-deploy/src/mysql-checker
1

当前文件夹为打包hoj-mysql-checker镜像的相关文件,只需将这些文件复制到同一个文件夹内,之后执行以下命令进行打包成镜像。

docker build -t hoj-mysql-checker .
1

docker-compose启动

version: "3"
services:
   hoj-mysql-checker:
    #image: registry.cn-shenzhen.aliyuncs.com/hcode/hoj_database_checker
    image: hoj-mysql-checker # 自己的镜像名称
    container_name: hoj-mysql-checker
    depends_on:
      - hoj-mysql
    links:
      - hoj-mysql:mysql
    environment:
      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-hoj123456} # mysql的数据库密码
1
2
3
4
5
6
7
8
9
10
11
12

文件介绍

# 1. hoj-update.sql

此文件为检查更新的sql脚本

# 2. update.sh

此文件为执行脚本

#!/bin/sh

mysql -h mysql -uroot -p$MYSQL_ROOT_PASSWORD -e "select version();" &> /dev/null
RETVAL=$?

while [ $RETVAL -ne 0 ]
do
	sleep 3
	mysql -h mysql -uroot -p$MYSQL_ROOT_PASSWORD -e "select version();" &> /dev/null
	RETVAL=$?
done
mysql -uroot -h mysql -p$MYSQL_ROOT_PASSWORD -D hoj -e "source /sql/hoj-update.sql"
echo 'Check whether the `hoj` database has been updated successfully!' 
1
2
3
4
5
6
7
8
9
10
11
12
13

# 3. Dockerfile

FROM arey/mysql-client

COPY ./hoj-update.sql /sql/

COPY ./update.sh /sql/

ENTRYPOINT ["/bin/sh", "/sql/update.sh"]

1
2
3
4
5
6
7
8
Last update: December 23, 2021 22:28
Contributors: Himit_ZH