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

一、项目介绍

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

  • 支持问卷调查、在线表单、考试测评、投票评选、流程审批等业务场景。
  • 支持私有化部署和源码交付,帮助组织快速构建数字化数据采集应用。

image

二、运行环境要求 (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-Tduckx\docker\init-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 命名卷,可以在此添加,但相对路径更便于迁移。

image

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

image

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

image

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

  • 打开绿联 NAS 桌面上的 Docker 应用。
  • 在左侧菜单点击 容器,在列表中找到 tduck-mysql。
  • 点击容器名称进入详情页,然后点击上方的 终端 标签页。

image

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

image

image

  • 将 ./init-db 目录挂载到了容器内的 /docker-entrypoint-initdb.d,所以你上传的 tduck.sql 文件就在容器内的这个路径下。
  • 你可以在终端中输入以下命令确认文件是否存在:
ls -la /docker-entrypoint-initdb.d/

image

image

  • 在容器终端中,直接执行以下命令,将 SQL 文件导入到 tduck 数据库中(密码是 tduck@mysql):
mysql -u root -ptduck@mysql tduck < /docker-entrypoint-initdb.d/tduck.sql

image

  • 执行后,终端会显示 SQL 执行的过程(一堆 CREATE TABLE 和 INSERT 的日志),如果没有报错,说明导入成功了。
  • 验证表是否创建成功,继续在终端中输入:
mysql -u root -ptduck@mysql -e "USE tduck; SHOW TABLES;"

image

7、重启整个项目;

image

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

image

image

image

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

五、参考文档

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

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

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

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享