如何升级
备份数据库
术语 | 说明 |
---|---|
Docker镜像 | 指定软件的Docker文件, 通过docker images命令查看镜像列表 |
Docker容器 | 执行起来的Docker镜像实例,通过docker ps命令查看已运行的容器列表 |
说明
Cat2Bug-Platform.jar新程序在启动时,会自动对比老数据库与新数据库的数据结构和数据,并自动更新,因此,无论那种方式升级,请先备份数据库文件。
MySQL数据库备份
- MySQL直接部署在服务器的导出方式,按照以下命令导出sql文件备份。
mysqldump -u MySQL用户名 -p cat2bug_platform > 导出文件名.sql
- MySQL部署在Docker容器中,首先查看容器ID,命令如下:
docker ps
然后通过如下命令后点击回车键,回车后输入MySQL的登陆密码,再点击会车,成功后会将sql文件导出到当前文件夹:
docker exec -it <容器ID> mysqldump -u MySQL用户名 -p cat2bug_platform > 导出文件名.sql
H2数据库备份
- Cat2Bug-Platform.jar系统直接部署在服务器中的,H2数据库已文件形式保存在Cat2Bug-Platform.jar根目录的data文件夹中,直接通过复制粘贴拷贝即可。
- Cat2Bug-Platform部署在Docker容器中的,可以通过如下命令将H2数据库文件复制到宿主机。
查看容器ID,单容器查看镜像名称为cat2bug/cat2bug-platform的容器ID,Docker-Compose部署的查看镜像名为cat2bug/cat2bug-platform/web-after的容器ID,查看容器ID命令如下:
docker ps
复制H2数据库文件
# 查看
docker cp <容器ID>:/cat2bug/data ./h2
docker cp <容器ID>:/home/data ./h2
提示
当查看当前路径./h2文件夹下有cat2bug.mv.db、cat2bug.trace.db两个文件时,表示复制成功。
备份日志
日志目录默认在Cat2Bug-Platform根目录的logs目录下,如果之前部署时修改过此路径,可以解压Cat2Bug-Platform.jar执行文件,在./BOOT-INF/classes/logback.xml中查看配置路径。
<!-- 日志存放路径 -->
<property name="log.path" value="logs" />
value设置的就是日志存储路径,默认为当前Jar文件下的logs目录,如果此目录不存在,将在Cat2Bug-Platform系统执行时自动创建。 手动备份此目录下的日志即可。
如部署时采用Docker部署,且没有将日志映射到宿主机,可通过命令拷贝。
# 查看
docker cp <容器ID>:/cat2bug/logs ./logs
docker cp <容器ID>:/home/logs ./logs
备份附件及图片
附件及图片的存放路径默认存放在Cat2Bug-Platform系统项目路径的uploadPath目录中, 也可以通过解压Cat2Bug-Platform.jar文件,在./BOOT-INF/classes/application.yml文件中进行配置修改。
# 项目相关配置
cat2bug:
# 文件路径
profile: uploadPath
profile后面的值就是附件与图片的保存路径,如果此目录不存在,将在Cat2Bug-Platform系统执行时自动创建。 手动备份此目录下的文件即可。
如部署时采用Docker部署,且没有将uploadPath目录映射到宿主机,可通过命令拷贝将整个uploadPath目录中的文件拷贝到宿主机中。
# 查看
docker cp <容器ID>:/cat2bug/uploadPath ./uploadPath
docker cp <容器ID>:/home/uploadPath ./uploadPath
Jar文件部署方式升级
Jar方式部署的系统在升级时关闭Jar进程,直接替换Jar文件,再重启启动即可。
Docker单容器的升级
- 查看运行的cat2bug/cat2bug-platform容器ID
docker ps
- 停止并删除cat2bug/cat2bug-platform容器
docker stop <容器ID>
docker rm <容器ID>
- 查看cat2bug/cat2bug-platform旧镜像
docker images
- 移除cat2bug/cat2bug-platform旧镜像
docker rmi <镜像ID>
- 下载并执行新的cat2bug/cat2bug-platform容器
docker run \
-it -d -p 8022:8022 \
-v ~/cat2bug-platform/data:/cat2bug/data \
-v ~/cat2bug-platform/logs:/cat2bug/logs \
-v ~/cat2bug-platform/upload:/cat2bug/uploadPath \
--name cat2bug-platform \
cat2bug/cat2bug-platform:latest
- -v ~/cat2bug-platform/data:/cat2bug/data: 将系统中的h2数据库文件映射到本机~/cat2bug-platform/data目录
- -v ~/cat2bug-platform/logs:/cat2bug/logs: 将系统中的日志文件映射到本机~/cat2bug-platform/logs目录
- -v ~/cat2bug-platform/upload:/cat2bug/uploadPath: 将系统中下载的文件映射到本机~/cat2bug-platform/upload目录
将之前备份的日志、H2数据库(MySQL不用复制)、附件及图片等文件重新粘贴到指定映射目录。
- 执行成功后,从浏览器访问Cat2Bug-Platform系统,默认路径为 http://localhost:8022,检查是否可以正常使用。
Docker-Compose部署方式的升级
- 查看运行的cat2bug/cat2bug-platform-front和cat2bug/cat2bug-platform-after两个容器ID
docker ps
- 分别停止并删除cat2bug/cat2bug-platform-front和cat2bug/cat2bug-platform-after容器
docker stop <容器ID>
docker rm <容器ID>
- 查看cat2bug/cat2bug-platform-front和cat2bug/cat2bug-platform-after旧镜像
docker images
- 移除cat2bug/cat2bug-platform-front和cat2bug/cat2bug-platform-after旧镜像
docker rmi <镜像ID>
- 通过Docker-Compose下载并执行新的Cat2Bug-Platform容器
curl -o docker-compose.yml http://cat2bug.com/docker/docker-compose.yml
docker-compose up -d
- curl: 下载docker-compose.yml文件
- docker-compose 启动容器
在docker-compose.yml文件中,设置了Docker容器映射到宿主机的日志、附件和图片的路径,如果旧镜像和新镜像映射的不同,可将备份的文件拷贝过来。
以下为docker-compose.yml文件内容,其中78、79行既是映射路径。
version: '3.4'
name: cat2bug-platform
services:
cat2bug-platform-ai:
image: ollama/ollama:latest
hostname: ollama
container_name: cat2bug-platform-ai
restart: always
volumes:
- ./ai:/root/.ollama
expose:
- "11434"
environment:
TZ: Asia/Shanghai
healthcheck:
test: "exit 0"
networks:
- cat2bug-network
cat2bug-platform-mysql:
image: cat2bug/cat2bug-platform-mysql:latest
hostname: mysql
container_name: cat2bug-platform-mysql
restart: always
command:
--default-authentication-plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1
--interactive_timeout=259200
--wait_timeout=259200
--max_connections=1000
volumes:
- ./mysql/:/var/lib/mysql
expose:
- "3306"
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_HOST: "%"
MYSQL_DATABASE: cat2bug_platform
MYSQL_ROOT_PASSWORD: cat2bug_password
MYSQL_USER: cat2bug
MYSQL_PASSWORD: cat2bug_password
healthcheck:
test: "mysql -h127.0.0.1 -P3306 -uroot -pcat2bug_password -e 'SHOW DATABASES;'"
interval: 10s
timeout: 5s
retries: 6
start_period: 30s
networks:
- cat2bug-network
cat2bug-platform-redis:
image: redis:7.2.3
hostname: redis
container_name: cat2bug-platform-redis
restart: always
expose:
- "6739"
healthcheck:
test: "exit 0"
networks:
- cat2bug-network
cat2bug-platform-web-after:
hostname: after
image: cat2bug/cat2bug-platform-web-after:latest
container_name: cat2bug-platform-web-after
restart: always
expose:
- "2020"
environment:
SPRING_DATASOURCE_DRUID_MASTER_URL: jdbc:mysql://cat2bug-platform-mysql:3306/cat2bug_platform?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8
SPRING_DATASOURCE_DRUID_MASTER_USERNAME: root
SPRING_DATASOURCE_DRUID_MASTER_PASSWORD: cat2bug_password
SPRING_REDIS_HOST: cat2bug-platform-redis
REDIS_HOSTS: cat2bug-platform-redis:6379
CAT2BUG_AI_HOST: http://cat2bug-platform-ai:11434
volumes:
- ./uploadPath:/home/uploadPath
- ./logs:/home/logs
links:
- cat2bug-platform-mysql
- cat2bug-platform-redis
- cat2bug-platform-ai
depends_on:
cat2bug-platform-mysql:
condition: service_healthy
cat2bug-platform-redis:
condition: service_healthy
cat2bug-platform-ai:
condition: service_healthy
healthcheck:
test: "exit 0"
networks:
- cat2bug-network
cat2bug-platform-web-front:
hostname: front
image: cat2bug/cat2bug-platform-web-front:latest
container_name: cat2bug-platform-web-front
restart: always
ports:
- "8022:80"
links:
- cat2bug-platform-web-after
depends_on:
cat2bug-platform-web-after:
condition: service_healthy
networks:
- cat2bug-network
networks:
cat2bug-network:
driver: bridge
- 执行成功后,从浏览器访问Cat2Bug-Platform系统,默认路径为 http://localhost:8022,检查是否可以正常使用。