Docker 部署开源版
本文介绍如何使用 Docker 一键部署卷王问卷考试系统,卷王官方镜像已发布到 Dockerhub surveyking/surveyking,并且同时支持 linux/amd64
和 linux/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 数据库文件)
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
用户需要修改的参数:
MYSQL_USER
(MySQL 数据库的用户名) :
- 这个参数是你 MySQL 数据库的用户名。如果你使用了不同的用户名(比如
root
或其他名称),需要将surveyking
修改为你自己的 MySQL 数据库用户名。 - 例如,如果你的 MySQL 用户名是
admin
,你需要将这一行修改为:
-e MYSQL_USER=admin
MYSQL_PASS
(MySQL 数据库的密码) :
-
这个参数是你 MySQL 数据库的密码,用于连接数据库。如果你在设置 MySQL 数据库时使用了不同的密码,需要在这里将
surveyking
修改为你自己的 MySQL 数据库密码。 -
例如,如果你的 MySQL 密码是
mysecretpassword
,你需要将这一行修改为:-e MYSQL_PASS=mysecretpassword
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'
- 日志文件和数据文件挂载路径 :
-
-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
- 例如,如果你想把文件保存到
- 端口映射 :
-
-p 1991:1991
:这个参数将容器内部的 1991 端口映射到你机器的 1991 端口。这意味着你可以通过浏览器访问http://localhost:1991
来访问应用程序。如果你有其他应用程序占用了这个端口,或者你想使用不同的端口,你可以修改第一个1991
为其他值。- 例如,如果你想在本地机器上使用 8080 端口访问该应用程序,你可以修改为:
-p 8080:1991
Docker compose 方式部署
参考文档
注意
上一个版本是 2022 年发布,无法直接升级到最新版,强制升级会导致之前数据丢失,请备份完数据之后再升级