跳到主要内容

Docker 部署开源版

本文介绍如何使用 Docker 一键部署卷王问卷考试系统,卷王官方镜像已发布到 Dockerhub surveyking/surveyking,并且同时支持 linux/amd64linux/arm64 两种架构。

如何部署

H2 数据库运行

这种部署方式使用的是内置的 H2 数据库,相比 MySQL 的好处是无需额外配置或安装数据库,部署更为简单和快速。

# 一键启动,默认使用的是内置的 h2 数据库
docker run -d -p 1991:1991 surveyking/surveyking

# 挂载数据库文件、上传附件、日志文件
docker run -d -p 1991:1991 -v ${PWD}/db:/app/db -v ${PWD}/files:/app/files -v ${PWD}/logs:/app/logs surveyking/surveyking

# 由于 dockerhub 国内无法访问,可以使用阿里云镜像库
docker run -d -p 1991:1991 registry.cn-hangzhou.aliyuncs.com/surveyking/surveyking:latest

启动之后,容器内有如下四个目录,分别对应文件目录(编辑问卷里面的图片,以及用户上传的附件等)、日志目录(卷王运行过程的一些日志)、卷王数据库文件(h2 数据库文件)

1724375223269

MySQL 数据库运行

这种部署方式使用的是外部的 MySQL 数据库,好处是数据持久化更可靠,适合生产环境和高并发场景,同时可以利用 MySQL 的性能优化和集群功能。缺点是部署和配置复杂度较高,需要单独维护数据库服务,并且在初次配置时可能需要额外的时间和技能。

# 使用外置 mysql 数据库
docker run -e PROFILE=mysql \
-v ${PWD}/logs:/app/logs \
-v ${PWD}/files:/app/files \
-e MYSQL_USER=surveyking \
-e MYSQL_PASS=surveyking \
-e DB_URL='jdbc:mysql://172.17.0.1:3306/surveyking?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=UTF-8' \
-p 1991:1991 \
surveyking/surveyking

用户需要修改的参数:

  1. MYSQL_USER(MySQL 数据库的用户名) :
  • 这个参数是你 MySQL 数据库的用户名。如果你使用了不同的用户名(比如 root 或其他名称),需要将 surveyking 修改为你自己的 MySQL 数据库用户名。
  • 例如,如果你的 MySQL 用户名是 admin,你需要将这一行修改为:
-e MYSQL_USER=admin
  1. MYSQL_PASS(MySQL 数据库的密码) :
  • 这个参数是你 MySQL 数据库的密码,用于连接数据库。如果你在设置 MySQL 数据库时使用了不同的密码,需要在这里将 surveyking 修改为你自己的 MySQL 数据库密码。

  • 例如,如果你的 MySQL 密码是 mysecretpassword,你需要将这一行修改为:

    -e MYSQL_PASS=mysecretpassword
  1. DB_URL(MySQL 数据库的连接地址) :
  • 这个参数指定了如何连接到你的 MySQL 数据库,包括 IP 地址、端口号、数据库名称和一些连接选项。
  • 你需要修改以下部分:
    • 172.17.0.1:这是你的 MySQL 数据库的 IP 地址或主机名。如果你的 MySQL 数据库运行在本地机器上,可以保持不变;如果它在另一台机器上,请将其更改为该机器的 IP 地址或主机名。
    • 3306:这是 MySQL 数据库的端口号。如果你没有修改 MySQL 的默认端口号,可以保持不变;如果修改了端口号,请将其更改为实际使用的端口号。
    • surveyking:这是数据库名称。你需要将它更改为你在 MySQL 中创建的实际数据库名称。
  • 例如,如果你的数据库在 192.168.1.100 服务器上,端口号是 3307,数据库名称是 mydatabase,你需要将这一行修改为:
-e DB_URL='jdbc:mysql://192.168.1.100:3307/mydatabase?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=UTF-8'
  1. 日志文件和数据文件挂载路径 :
  • -v ${PWD}/logs:/app/logs :这个参数将本地机器上的 logs 文件夹挂载到容器内的 /app/logs 目录。这样,应用程序的日志文件将保存在你的本地机器上。你可以将 ${PWD}/logs 替换为你希望保存日志文件的具体路径。

    • 例如,如果你想把日志保存到 C:\myapp\logs,你可以修改为:
    -v C:/myapp/logs:/app/logs
  • -v ${PWD}/files:/app/files :这个参数将本地机器上的 files 文件夹挂载到容器内的 /app/files 目录,用于存储上传的文件。你可以将 ${PWD}/files 替换为你希望保存文件的具体路径。

    • 例如,如果你想把文件保存到 D:\myapp\files,你可以修改为:
    -v D:/myapp/files:/app/files
  1. 端口映射 :
  • -p 1991:1991 :这个参数将容器内部的 1991 端口映射到你机器的 1991 端口。这意味着你可以通过浏览器访问 http://localhost:1991 来访问应用程序。如果你有其他应用程序占用了这个端口,或者你想使用不同的端口,你可以修改第一个 1991 为其他值。

    • 例如,如果你想在本地机器上使用 8080 端口访问该应用程序,你可以修改为:
    -p 8080:1991

Docker compose 方式部署

参考文档

注意

上一个版本是 2022 年发布,无法直接升级到最新版,强制升级会导致之前数据丢失,请备份完数据之后再升级

BUG 反馈

gitee issues

github issues