跳到主要内容

Docker 部署开源版

Docker 部署适合已经安装 Docker 的用户,用一条命令把卷王 v1.12.0 启动起来。

使用场景

  • 你已经会打开终端,并且电脑或服务器已经安装 Docker。
  • 你想先用 H2 内置数据库快速试用。
  • 你有自己的 MySQL,想把卷王连接到现有数据库。
提示

如果你要在服务器上长期使用,并且还没有准备 MySQL,建议直接看 Docker Compose 部署。它会同时部署卷王和 MySQL。

操作步骤

1. 创建数据目录

先创建一个专门保存数据的目录:

mkdir -p surveyking/db surveyking/files surveyking/logs
cd surveyking

这些目录分别保存数据库文件、上传附件和运行日志。

2. 启动卷王

复制下面的命令运行:

docker run -d \
--name surveyking \
--restart unless-stopped \
-p 1991:1991 \
-v "$PWD/db:/app/db" \
-v "$PWD/files:/app/files" \
-v "$PWD/logs:/app/logs" \
surveyking/surveyking:latest

国内访问 Docker Hub 较慢时,可以换成阿里云镜像:

docker run -d \
--name surveyking \
--restart unless-stopped \
-p 1991:1991 \
-v "$PWD/db:/app/db" \
-v "$PWD/files:/app/files" \
-v "$PWD/logs:/app/logs" \
registry.cn-hangzhou.aliyuncs.com/surveyking/surveyking:latest

启动后,可以用下面的命令查看日志:

docker logs -f surveyking

看到 Started SurveyServerApplication 后,说明启动成功。

3. 打开并初始化系统

浏览器访问:

http://localhost:1991

第一次打开会自动进入 /setup 页面。

如果只是试用,选择 H2 内置数据库。完整初始化步骤见:初始化、备份和升级

如果要连接外部 MySQL,建议优先改用 Docker Compose 部署。单容器 Docker 更适合 H2 试用。

初始化完成后,按 初始化、备份和升级 里的默认账号登录,并马上修改密码。

4. 管理服务

常用命令:

想做什么命令
停止服务docker stop surveyking
启动服务docker start surveyking
重启服务docker restart surveyking
查看日志docker logs -f surveyking
查看容器状态docker ps

使用 MySQL 数据库

如果你已经有 MySQL,可以让 Docker 容器连接外部 MySQL。

先在 MySQL 里创建空数据库,不需要手动导入初始化脚本:

CREATE DATABASE surveyking DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

再启动卷王:

docker run -d \
--name surveyking \
--restart unless-stopped \
-p 1991:1991 \
-v "$PWD/files:/app/files" \
-v "$PWD/logs:/app/logs" \
-e PROFILE=mysql \
-e MYSQL_USER=surveyking \
-e MYSQL_PASS=你的数据库密码 \
-e DB_URL='jdbc:mysql://数据库IP:3306/surveyking?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai' \
surveyking/surveyking:latest

需要替换的内容:

配置改成什么
数据库IPMySQL 所在电脑或服务器的 IP
surveyking你的数据库名
MYSQL_USERMySQL 用户名
MYSQL_PASSMySQL 密码
注意

如果 MySQL 装在 Docker 宿主机上,容器里的 localhost 不是宿主机。Linux 常见写法是 172.17.0.1,更稳妥的是填写这台服务器的内网 IP。

启动后第一次打开仍会进入 /setup。按 初始化、备份和升级 选择 MySQL 数据库 并填写连接信息。

备份和升级

备份、恢复和升级步骤统一见:初始化、备份和升级

注意

删除容器前,确认 dbfileslogs 这些挂载目录还在。不要把数据目录一起删除。

常见问题

为什么打开后进入 /setup,不是登录页?

这是 v1.12.0 的首次初始化页面。系统需要先确认你使用 H2 还是 MySQL。

初始化、备份和升级 完成初始化后,再访问 http://localhost:1991 就会进入登录页。

手机为什么打不开 localhost:1991

localhost 只表示当前设备。手机访问 localhost,访问的是手机自己。

如果卷王跑在电脑上,手机要访问电脑的局域网 IP,比如:

http://192.168.1.23:1991

如果卷王跑在云服务器上,手机访问服务器公网 IP:

http://服务器公网IP:1991

同时确认服务器防火墙和云服务商安全组已经放行 1991 端口。

端口 1991 被占用了怎么办?

把命令里的:

-p 1991:1991

改成:

-p 8080:1991

然后访问 http://localhost:8080

删除容器会不会丢数据?

只删除容器不会丢挂载目录里的数据。

不要删除这些目录:

  • surveyking/db
  • surveyking/files
  • surveyking/logs

如果你用的是外部 MySQL,升级前也要先导出系统备份或单独备份 MySQL 数据库。

Docker Hub 拉不下来镜像怎么办?

可以使用阿里云镜像地址:

registry.cn-hangzhou.aliyuncs.com/surveyking/surveyking:latest

把启动命令最后的镜像名替换成上面这个地址即可。