跳到主要内容

Docker Compose 部署

Docker Compose 部署会同时启动卷王 v1.12.0 和 MySQL,适合把开源版长期放在服务器上使用。

使用场景

  • 你有一台 Linux 云服务器。
  • 服务器已经安装 Docker 和 Docker Compose。
  • 你希望数据库、上传附件和日志都保存在固定目录里,方便备份和迁移。
提示

零基础用户如果已经安装宝塔面板,可以优先看 宝塔一键部署。不想装宝塔,再用本文的 Docker Compose 方式。

操作步骤

1. 连接服务器

用 SSH 工具连接你的服务器。

进入一个你想保存部署文件的目录,比如:

cd /opt

2. 运行一键脚本

复制下面两行命令执行:

curl -sSO https://surveyking.cn/surveyking-docker/setup.sh
bash setup.sh

脚本会创建 surveyking 目录,并生成 Docker Compose 配置。

如果脚本提示选择端口,直接回车会使用默认端口:

服务默认端口
卷王系统1991
MySQL33060

3. 等待启动完成

执行完成后,查看容器状态:

cd surveyking
docker compose ps

看到 surveyking-appsurveyking-mysql 都是运行状态,说明服务已启动。

也可以查看应用日志:

docker compose logs -f surveyking-app

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

4. 打开并初始化系统

服务器本机访问:

http://localhost:1991

其他电脑或手机访问:

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

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

选择 MySQL 数据库,部署方式选择 Docker Compose 内置 MySQL。如果页面里的默认值不一致,按下面填写:

配置项填写内容
数据库地址mysql
端口号3306
数据库名称surveyking
用户名surveyking
密码surveyking/.env 里的密码
注意

这里的端口填 3306,不是 3306033060 是服务器对外访问 MySQL 的端口,卷王容器连接 MySQL 容器时使用内部端口 3306

后续系统信息、默认账号和改密码步骤见:初始化、备份和升级

常用管理命令

所有命令都在 surveyking 目录下执行:

cd /opt/surveyking
想做什么命令
启动服务docker compose up -d
停止服务docker compose down
重启服务docker compose restart
查看状态docker compose ps
查看卷王日志docker compose logs -f surveyking-app
查看 MySQL 日志docker compose logs -f surveyking-mysql

修改端口

如果 1991 被占用,可以在运行脚本前指定新端口:

SK_APP_PORT=8080 bash setup.sh

如果 33060 被占用,可以指定 MySQL 对外端口:

SK_MYSQL_PORT=33061 bash setup.sh
提示

端口改成 8080 后,访问地址也要改成 http://服务器公网IP:8080

查看 MySQL 密码

脚本会自动生成 MySQL 密码,并写入 surveyking/.env。第一次进入 /setup 选择 MySQL 时,也要用这个密码。

查看密码:

cd /opt/surveyking
cat .env

你会看到类似:

MYSQL_PASSWORD=一串随机密码

备份、恢复和升级

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

如果你只想原地更新 Docker 镜像,先导出备份,再执行:

cd /opt/surveyking
docker compose pull
docker compose up -d
docker image prune -f

常见问题

为什么 /setup 里 MySQL 端口填 3306,脚本默认端口却是 33060

33060 是给服务器外部连接 MySQL 用的端口。

卷王应用和 MySQL 都在 Docker Compose 内部网络里,卷王连接 MySQL 时走容器内部地址,所以 /setup 里填写:

mysql:3306

不要在 /setup 里填 33060

手机为什么不能访问 localhost:1991

localhost 只代表当前设备。手机上的 localhost 是手机自己,不是服务器。

手机访问服务器时,要输入:

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

如果打不开,检查两处:

  • 云服务器安全组是否放行 1991 端口。
  • 服务器系统防火墙是否放行 1991 端口。
提示端口被占用怎么办?

如果应用端口 1991 被占用,换成 8080

SK_APP_PORT=8080 bash setup.sh

如果 MySQL 对外端口 33060 被占用,换成 33061

SK_MYSQL_PORT=33061 bash setup.sh
服务启动失败怎么办?

先看容器状态:

cd /opt/surveyking
docker compose ps

再看日志:

docker compose logs surveyking-app
docker compose logs surveyking-mysql

常见原因是端口被占用、Docker 没有启动、服务器无法下载镜像或初始化 SQL。

重置服务会删除数据吗?

下面这个命令会删除 MySQL 数据卷,不要随便执行:

docker compose down -v

如果只是停止服务,用:

docker compose down