跳转至

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

Note

本镜像主要是为了跟随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的数据库密码

二、自己打包镜像部署

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

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

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

docker build -t hoj-mysql-checker .

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. 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!' 

3. Dockerfile

FROM arey/mysql-client

COPY ./hoj-update.sql /sql/

COPY ./update.sh /sql/

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