国内首个Vue开源表单问卷神器!Tduck填鸭Docker私有化部署教程

2025-02-26 10:35:34 10点赞 38收藏 1评论

本篇分享一款问卷表单系统————Tduck填鸭表单,是国内首批基于Vue开源的问卷/表单收集工具。项目团队旨在让企事业单位能够低成本快速拥有一套独立部署的表单问卷系统,即时赋能业务。

我能想到的功能基本全都有,开源版本对于个人或大多数团队完全够用。

国内首个Vue开源表单问卷神器!Tduck填鸭Docker私有化部署教程国内首个Vue开源表单问卷神器!Tduck填鸭Docker私有化部署教程国内首个Vue开源表单问卷神器!Tduck填鸭Docker私有化部署教程

之前也分享过另一个问卷项目:卷王,也提供了Docker开源版本用着还不错(最近一次更新是4个月前),大家感兴趣可以都部署对比一下。


项目特点


系统采用无代码设计理念,使用者可以通过拖拽的方式创建问卷表单,所见即所得;与此同时也支持专业技术人员自行二次开发自定义组件,来满足企不同企业组织的个性化需求。系统采用SpringBoot+Vue+ElementUI技术栈,无需复杂学习即可快速上手,功能强大UI界面清新,通过简要部署就能够助力企业组织快速赋能业务。

支持 27+自定义组件 ,拖拽式快速生成表单问卷。

支持单行文本、多行文本、日期、下拉、单选、文件上传、排序、级联、轮播、一键定位、手机号验证、矩阵量表、子表单等组件。

支持通过文本批量导入表单组件,支持题目显隐逻辑设置。

表单数据,支持数据新增、编辑、导出、打印、预览和打包下载附件。

表单外观支持头图、背景图、背景颜色、按钮文字等配置。

报表支持对问题实时统计分析并以图形(柱状图、折线图、饼图)的形式展示输出和导出png图片。

提交后自定义文案、提交后自动跳转网址。

每个微信、账号、ip、设备、答题次数限制、支持设置允许填写时间、记录微信个人信息 。

支持发邮件、微信公众号模板推送提醒。

支持 数据同步Api(全量数据)、数据WebHook推送(可订阅事件:新增、修改、删除) 。

支持保存至模板中心,支持从模板中心选用模板创建表单问卷。

用户管理,新增用户、修改用户、删除用户。

文件存储自定义配置: 支持阿里云、七牛云、又拍云、本地、通用S3协议上传 。

支持 邮件、短信(阿里云、腾讯云、中昱维信)、微信公众号参数配置 。

支持回收中心,快速恢复问卷。


部署流程


分直接部署和自定义部署。

✅ 简单粗暴流派

官方文档给出的部署方式。

如果你过去没有部署MySQL,3306和8999端口也并未被占用,只想开箱即用,那就直接SSH进入你的NAS或者服务器后台,输入指令。

cd /share/Container # 进入你常用的docker路径下 git clone https://github.com/TDuckCloud/tduck-platform.git # 下载项目文件

真正需要的也就这俩文件,点我直达。

国内首个Vue开源表单问卷神器!Tduck填鸭Docker私有化部署教程

接着输入:

cd tduck-platform/docker docker compose up -d

喝上一杯茶,静静等着部署成功即可。

✅ 不算太轻松的部署

说是不太轻松,但也还行吧,主要很多老哥可能看到数据库配置就头大。

这里我们以威联通 NAS为例进行演示 Docker Compose 部署流程。如果你是部署到VPS,也可以先执行上面的命令,把项目文件下载下来。

品牌NAS用户直接去GHUB把上面的.sql文件下载下来,放在指定文件夹下。我惯例放在/share/Container/tduck/mysql/init-db,这一步必须要做。

国内首个Vue开源表单问卷神器!Tduck填鸭Docker私有化部署教程

另外还有两个目录要准备/share/Container/tduck/mysql/data/share/Container/tduck/upload

打开Container Station 将代码按自己实际情况修改后粘贴进框内并创建新的应用程序。

国内首个Vue开源表单问卷神器!Tduck填鸭Docker私有化部署教程

这些代码已经在官方的基础上按照我自己的个人需求进行修改(测试机上已成功部署),也进行了备注,服务器用户可以vim docker-compose.yml进行调整:

version: '3.6' # 最新版该行可删除 services: mysql: image: mysql:8.0.36 container_name: tduck-mysql networks: - tduck-network restart: always environment: - MYSQL_ROOT_PASSWORD=tduck@mysql # 可替换为你的新密码 - MYSQL_DATABASE=tduck # 可替换为你的新数据库名 - MYSQL_ROOT_HOST=% - TZ=Asia/Shanghai ports: - "3303:3306" # 冒号左侧端口号可改 volumes: - /share/Container/tduck/mysql/data:/var/lib/mysql # 冒号左侧替换为宿主机上 MySQL 数据存储的目录 - /share/Container/tduck/mysql/init-db:/docker-entrypoint-initdb.d # 同上 command: --default-authentication-plugin=caching_sha2_password --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] interval: 10s timeout: 5s retries: 5 tduck-platform: image: "tduckcloud/tduck-platform" container_name: tduck-platform networks: - tduck-network restart: always ports: - "8999:8999" # 冒号左侧端口号可改 volumes: - /share/Container/tduck/upload:/application/BOOT-INF/lib/upload # 修改卷挂载路径,将冒号左侧替换为宿主机上存放上传文件的目录 environment: - "JAVA_OPTS=-Duser.language=zh -XX:+UseG1GC" - "TZ=Asia/Shanghai" # 数据库连接配置:请确保数据库名和密码与 mysql 服务中的设置一致 - "spring.datasource.url=jdbc:mysql://mysql:3306/tduck?useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=UTC&tinyInt1isBit=false&allowPublicKeyRetrieval=true" - "spring.datasource.username=root" - "spring.datasource.password=tduck@mysql" # 与上面 MYSQL_ROOT_PASSWORD 所设保持一致 links: - mysql:mysql depends_on: mysql: condition: service_healthy networks: tduck-network: driver: bridge

如果你已经部署了MySQL服务,则建议部署代码如下:

version: '3.6' # 最新版该行可删除 services: tduck-platform: image: "tduckcloud/tduck-platform" container_name: tduck-platform restart: always ports: - "8999:8999" # 冒号左侧端口可修改 volumes: - "/your/upload/path:/application/BOOT-INF/lib/upload" # 修改:将 /your/upload/path 替换为你希望用于存储上传文件的宿主机目录 environment: - "JAVA_OPTS=-Duser.language=zh -XX:+UseG1GC" - "TZ=Asia/Shanghai" # 修改:数据库连接配置,指向已部署的 MySQL 实例 - "spring.datasource.url=jdbc:mysql://:/?useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=UTC&tinyInt1isBit=false&allowPublicKeyRetrieval=true" # 修改:指定你的 MySQL 用户名 - "spring.datasource.username=" # 修改:指定你的 MySQL 密码 - "spring.datasource.password="

请将 your-mysql-hostyour-mysql-portyour-database-name 替换为你实际 MySQL 的主机地址、端口和数据库名称。

your-mysql-usernameyour-mysql-password替换为你 MySQL 实例的相应凭证。


使用


访问地址: NAS_IP:8999

默认用户名:admin@tduckcloud.com,密码:123456

国内首个Vue开源表单问卷神器!Tduck填鸭Docker私有化部署教程

用起来没啥难度,大家自行体验。邮件配置、短信配置、接入公众号这些相关教程也都非常多了。

国内首个Vue开源表单问卷神器!Tduck填鸭Docker私有化部署教程

部署可能出现的问题


如果你确定以及肯定,上面的配置没问题,部署完但NAS_IP:8999访问无响应,建议多等一会儿,MySQL 的初始化可能没那么快。查看日志,MySQL 初始化完成后仍跑不起来,这时候重启整个服务再次访问Tduck即可。

tduck-mysql | 2025-02-25T07:45:51.317748Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock tduck-mysql | 2025-02-25T07:45:51.318056Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.36' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server - GPL.

碰到部署失败,建议检查这几项:

.sql初始化脚本文件是否放入指定文件夹下,若没有请放置完毕后,删除data下的所有内容,重新部署。

数据库名、用户名、密码是否一致,端口号是否被占用,持久化挂载目录是否正确且是否有正确的读写权限

检查服务名与连接 URL,MySQL 服务在 docker-compose.yml 中的服务名是 mysql,tduck-platform 里使用的连接地址则是 jdbc:mysql://mysql:3306/tduck...

展开 收起
1评论

  • 精彩
  • 最新
  • 不支持并行任务,只能使用后加签的方式实现,有些别扭。

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
相关好价
最新文章 热门文章
38
扫一下,分享更方便,购买更轻松