从零开始摸索VUE,配合Golang搭建导航网站(十二.使用Docker 新建Mysql应用,持久化数据保存,修改CI流程)

463 阅读2分钟

「这是我参与11月更文挑战的第12天,活动详情查看:2021最后一次更文挑战

前言

上篇基本上做完了后端项目的部署,今天来一个番外篇,做一个简单的Mysql容器
注意事项:

  1. 不管在哪里使用Docker安装Mysql必须做数据卷的映射,千万不能 将数据库数据放在docker容器中运行,除非自己只是测试一下,否则一但删除容器数据将全部清空,所以一定要做数据持久化!;
  2. 使用Docker安装Mysql IO性能是很低下的,数据读写在容器中读写一次,在绑定的卷中还要读取一次,两倍读写压力。

为什么要使用Docker 安装一个Mysql,因为是测试环境的Mysql,不追求性能,追求方便,自己在电脑上安装Mysql有些麻烦,需要自定义设置,设置环境变量。使用在自己本地使用mysql用docker一条命令就能安装完成。用的时候就启动,不用的时候就不启动,不占用系统性能,数据丢失了也可以在线上复制下来。

安装

传统方法,先使用在Power shell 中使用Docker命令拉取拉取镜像:

docker pull mysql 

然后使用docker run 从镜像中运行容器,注意数据卷映射,和端口,我自己本地win10机器没有安装mysql就不使用其他端口映射了,直接使用默认的3306,使用-e 设置myqsl密码,账号名默认为root:

docker run -d -p 3306:3306 -v /D/DockerFile/MysqlData:/var/lib/mysql --name mysql -e MYSQL_ROOT_PASSWORD=********  mysql

尝试使用navicat连接: image.png

修改连接文件

连接成功,我们先手动新建一个名为my_web的数据库,项目运行自动迁移生成数据表,然后再复制config.ini文件更改文件名为config-master.ini修改以下内容用于远程的数据库连接:

[server]
# debug 开发模式,release 生产模式
AppMode = release
HttpPort = :8080

[database]
Db = mysql
DbHost = ***.***.***.***
DbPort = 3306
DbUser = *****
DbPassWord = **********
DbName = my_web

修改原先的config.ini文件用于本地数据库连接:

[server]
# debug 开发模式,release 生产模式
AppMode = debug
HttpPort = :8080

[database]
Db = mysql
DbHost = 127.0.0.1
DbPort = 3306
DbUser = **********
DbPassWord = **********
DbName = my_web

再修改.gitlab-ci.yml文件,让项目部署的时候config-master.ini覆盖config.ini

stages:
  - deploy  #任务阶段顺序,只写了一个deploy部署阶段
  
build_master:
  stage: deploy  #任务阶段

  script:
    - rm -rf config.ini #先删除
    - cp config-master.ini config.ini #再复制
    - docker build -t my_gin_web:$CI_JOB_ID .  # CI_JOB_ID是一个环境变量,runner任务ID,可以看做成一个数据库的自增ID,每触发一个任务数字加一
    - docker stop my_gin_web
    - docker rm my_gin_web
    - docker run -d --name my_gin_web  -p 8083:8080  my_gin_web:$CI_JOB_ID
  only:
    - master # 指定只在master分支执行这个任务。
  tags: 
    - b4master  #指定执行任务的runner,安装runner的时候会提示填写runner的标签(tag)

总结

本地数据库安装完成,很简单,顺便修改了一下CI脚本。下一步准备vue cli 接入后端接口请求,然后进行数据渲染样式调整。