绿联NAS:搭建TDuck填鸭,一个企业级开源表单系统与问卷考试工具

2026-08-30 13:38:25 0点赞 1收藏 0评论

一、项目介绍

TDuck填鸭表单:企业级开源表单系统与问卷考试工具:

  • 支持问卷调查、在线表单、考试测评、投票评选、流程审批等业务场景。

  • 支持私有化部署和源码交付,帮助组织快速构建数字化数据采集应用。

imageimage

二、运行环境要求 (Prerequisites)

  • 操作系统:CentOS / Ubuntu / Debian / macOS / Windows

  • Java 环境JDK 1.8  (核心依赖,不支持 JDK 11/17+)

  • 数据库MySQL 5.7 或以上 (需要支持 JSON 字段类型)

  • 缓存服务无额外中间件依赖 (社区版使用 Ehcache 本地缓存,自动管理登录 Token 和验证码,不需要安装 Redis)

三、绿联docker compose教程

请参考:玩转绿联NAS:小白入坑之如何使用Docker compose搭建项目?-蓝小白的知识笔记

四、搭建步骤

1、下载源码:TduckX 3.6 更新 · TDUCK/tduck-platform – Gitee.com

2、下载的源码中找到tduck-v5.sql,并重命名为tduck.sql,路径:tduck-platform-Tduckxdockerinit-db;

3、打开绿联docker,创建项目,粘贴docker compose文件;

services:

# ---------- MySQL 数据库服务 ----------

mysql:

# 使用 MySQL 官方 8.0 版本镜像(稳定且支持常用认证)

image: mysql:8

# 固定容器名称,方便内部网络通信

container_name: tduck-mysql

# 容器异常退出后自动重启(除非手动停止)

restart: always

# 环境变量:用于初始化数据库

environment:

# root 用户密码(请根据实际情况修改,但需与下方一致)

- MYSQL_ROOT_PASSWORD=tduck@mysql

# 容器启动时自动创建的数据库名

- MYSQL_DATABASE=tduck

# 允许 root 从任意主机连接(% 代表任意 IP)

- MYSQL_ROOT_HOST=%

# 设置容器时区为上海

- TZ=Asia/Shanghai

# 端口映射:宿主机端口:容器端口(左侧可修改,避免冲突)

ports:

- "3306:3306"

# 数据卷挂载(使用相对路径,位于 docker-compose.yml 同级)

volumes:

# MySQL 数据文件持久化到 ./mysql/data

- ./mysql/data:/var/lib/mysql

# 初始化 SQL 脚本目录:首次启动时自动执行 .sql 文件

# 注意:如果 ./mysql/data 已存在,则不会再次执行

- ./init-db:/docker-entrypoint-initdb.d

# 以 root 用户运行容器内进程(解决宿主机文件权限不足问题)

# 如果宿主机文件权限正确(如 chmod 644),可移除此行

user: root

# 注释:MySQL 8.4 已废弃 default-authentication-plugin 参数,

# 故不再添加 command,使用默认配置即可。

# ---------- Tduck 调查问卷平台主服务 ----------

tduck-platform:

# 使用 Tduck 官方后端镜像

image: "tduckcloud/tduck-platform"

# 固定容器名称

container_name: tduck-platform

# 自动重启

restart: always

# 端口映射:宿主机 8999 → 容器内 8999(后端 API 端口)

ports:

- "8999:8999"

# 挂载卷:持久化用户上传的文件

volumes:

- ./upload:/application/BOOT-INF/lib/upload

# 环境变量:覆盖 Spring Boot 配置

environment:

# JVM 参数:语言=中文,启用 G1 垃圾回收器

- "JAVA_OPTS=-Duser.language=zh -XX:+UseG1GC"

# 容器时区

- "TZ=Asia/Shanghai"

# 数据库连接 URL(使用服务名 mysql 作为主机名,Docker DNS 自动解析)

# 添加 allowPublicKeyRetrieval=true 解决 MySQL 8 认证问题

- "spring.datasource.url=jdbc:mysql://mysql:3306/tduck?useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=UTC&tinyInt1isBit=false&allowPublicKeyRetrieval=true"

# 数据库用户名

- "spring.datasource.username=root"

# 数据库密码(必须与上方 MySQL 设置一致)

- "spring.datasource.password=tduck@mysql"

# 启动依赖:确保 MySQL 先启动

depends_on:

- mysql

# 卷声明(本文件使用相对路径绑定挂载,无需在顶层 volumes 中预先声明)

# 但如果您想使用 Docker 命名卷,可以在此添加,但相对路径更便于迁移。

imageimage

4、点击立即部署,等待部署完成;

imageimage

5、部署成功后,把tduck.sql上传到init-db这个文件夹中;

imageimage

6、回到docker,进入 MySQL 容器的终端

  • 打开绿联 NAS 桌面上的 Docker 应用。

  • 在左侧菜单点击 容器,在列表中找到 tduck-mysql。

  • 点击容器名称进入详情页,然后点击上方的 终端 标签页。

imageimage
  • 点击 连接(或“启动终端”),此时你会进入容器内部的命令行界面。

imageimageimageimage
  • 将 ./init-db 目录挂载到了容器内的 /docker-entrypoint-initdb.d,所以你上传的 tduck.sql 文件就在容器内的这个路径下。

  • 你可以在终端中输入以下命令确认文件是否存在:

ls -la /docker-entrypoint-initdb.d/imageimageimageimage

  • 在容器终端中,直接执行以下命令,将 SQL 文件导入到 tduck 数据库中(密码是 tduck@mysql):

mysql -u root -ptduck@mysql tduck < /docker-entrypoint-initdb.d/tduck.sqlimageimage

  • 执行后,终端会显示 SQL 执行的过程(一堆 CREATE TABLE 和 INSERT 的日志),如果没有报错,说明导入成功了。

  • 验证表是否创建成功,继续在终端中输入:

mysql -u root -ptduck@mysql -e "USE tduck; SHOW TABLES;"imageimage

7、重启整个项目;

imageimage

8、等待重启完成后,在浏览器访问 http://你的NAS_IP:8999,用默认账号 admin@tduckcloud.com / 密码 123456 登录即可;

imageimageimageimageimageimage

9、此时就完成了,各位可以愉快的玩耍了。

五、参考文档

1、官网:https://www.tduckcloud.com;

2、文档:https://doc.tduckcloud.com/openSource/deploy/dockerDeploy.html

3、项目:https://gitee.com/TDuckApp/tduck-platform

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
1
扫一下,分享更方便,购买更轻松