如何升级
备份数据库
| 术语 | 说明 | 
|---|---|
| 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,检查是否可以正常使用。
 
