背景

觉得公司使用Excel/Word来进行考试比较蠢,不美观,判卷费时费力。因此研究研究。

简介

卷王问卷系统是一款高效、智能的在线问卷调查工具,旨在帮助用户快速创建、分发、收集和分析问卷数据。

该系统拥有简洁直观的操作界面,适合各类用户,包括企业、教育机构、市场调研人员等。

用户可以通过卷王轻松设计调查问卷,选择多种问题类型(如单选、多选、评分、填空等),并根据需求设置逻辑跳转、问卷模板等功能。

主要特点:

  1. 易于使用: 无需专业技能即可创建和管理问卷,操作界面简洁友好。

  2. 多样化问卷设计: 提供丰富的题型和模板,满足不同场景的需求。

  3. 智能分析: 自动统计并生成数据报告,支持图表展示和导出数据。

  4. 跨平台支持: 支持PC端和移动端问卷填写,方便快捷。

  5. 实时反馈: 提供实时数据监控,帮助用户随时掌握调查进展。

  6. 安全性保障: 数据加密存储,保障用户的隐私和数据安全。

https://surveyking.cn/

官方实例

https://pro.surveyking.cn/s/exam


部署

1.docker部署(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

2.docker部署(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

3.docker-compose部署

services:
  mysql:
    image: mysql:8
    container_name: mysql
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: surveyking
      MYSQL_DATABASE: surveyking
    volumes:
      - ./mysql/conf:/etc/mysql/conf.d
      - ./mysql/data:/var/lib/mysql
      - ./sqls:/docker-entrypoint-initdb.d
    networks:
      app_net:
        ipv4_address: 10.20.52.20
  surveyking:
    image: surveyking/surveyking:latest
    container_name: surveyking
    restart: unless-stopped
    environment:
      PROFILE: mysql
      MYSQL_USER: root
      MYSQL_PASS: surveyking
      DB_URL: jdbc:mysql://mysql:3306/surveyking
    volumes:
      - ./files:/app/files
      - ./logs:/app/logs
    depends_on:
      - mysql
    ports:
      - '1991:1991'
    networks:
      app_net:
        ipv4_address: 10.20.52.10

networks:
  app_net:
    driver: bridge
    enable_ipv6: true
    ipam:
      driver: default
      config:
        - subnet: 10.20.52.0/24
          gateway: 10.20.52.1
        - subnet: FD00:1:1::/64
          gateway: FD00:1:1::1

效果图

访问ip+端口即可访问