news 2026/9/10 16:56:43

ToolJet 快速体验指南:用 Docker 一键启动与自定义端口部署

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ToolJet 快速体验指南:用 Docker 一键启动与自定义端口部署

ToolJet 快速体验指南:用 Docker 一键启动与自定义端口部署

【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 🚀项目地址: https://gitcode.com/GitHub_Trending/to/ToolJet

导读

本篇指南围绕 ToolJet 官方提供的tooljet/try:ee-latest一键体验镜像,讲解如何在本地通过 Docker 在数分钟内启动一套完整的 ToolJet 平台,并深入说明其内置组件(PostgreSQL、Temporal、Redis)、数据持久化原理、常用环境变量以及端口自定义方法。读完本文,你将掌握 ToolJet 本地试玩的标准命令、容器生命周期管理技巧,并能基于环境变量将体验实例灵活调整为适合自己机器的端口与配置,为后续参考 正式部署方案 打下基础。

一、体验镜像是什么:一条命令背后的完整平台

ToolJet 是一款开源的低代码应用构建平台,用于快速搭建内部工具、仪表盘、业务应用、工作流与 AI Agent。官方为了让开发者最快上手,发布了内置依赖的 "try" 系列体验镜像(例如tooljet/try:ee-latest)。与生产部署镜像tooljet/tooljet不同,体验镜像把运行平台所需的全部组件都打包进了一个容器:

  • ToolJet Server:NestJS 实现的后端服务(源码位于 server/src),负责应用定义、数据源凭据(加密)与用户认证数据的管理;
  • 内嵌 PostgreSQL 13:数据库数据存放在 Docker 卷tooljet_data(挂载到容器内/var/lib/postgresql/13/main);
  • Temporal:工作流执行引擎,其 SQLite 数据存放在 Docker 卷temporal_sqlite(挂载到/etc/temporal);
  • 前端静态资源与 Nginx 反向代理:由容器内 Nginx 同时负责托管前端(/)并把/api/、WebSocket(/ws/yjs)等请求代理到后端 3000 端口,参见 frontend/config/nginx.conf.template 中的location @proxy { proxy_pass http://${SERVER_HOST}:3000; }配置;
  • Redis:体验镜像默认附带并自启本地 Redis(绑定 127.0.0.1:6379),用于多人实时编辑与后台任务,参见容器入口脚本 docker/ce-entrypoint.sh 中对redis-server的启动逻辑。

也就是说,只要机器上装了 Docker,无需单独安装 PostgreSQL、Redis 或 Node.js,一条命令即可获得可登录使用的完整平台。

二、本地快速启动:官方默认命令

在终端中执行以下命令即可在本地拉起 ToolJet(体验镜像对应 Enterprise Edition 最新版本):

docker run \ --name tooljet \ --restart unless-stopped \ -p 80:80 \ --platform linux/amd64 \ -v tooljet_data:/var/lib/postgresql/13/main \ -v temporal_sqlite:/etc/temporal \ tooljet/try:ee-latest

各参数含义如下:

参数作用
--name tooljet为容器命名,后续可用docker stop tooljet/docker start tooljet管理
--restart unless-stopped容器异常退出或 Docker 守护进程重启后自动拉起(手动 stop 除外)
-p 80:80将容器内 80 端口映射到宿主机 80 端口
--platform linux/amd64显式指定 x86_64 平台,体验镜像基于 Linux x86 构建
-v tooljet_data:/var/lib/postgresql/13/main内嵌 PostgreSQL 13 数据目录挂载到命名卷,保证数据持久化
-v temporal_sqlite:/etc/temporalTemporal 工作流引擎的 SQLite 数据持久化卷

启动后的关键事实

  • ToolJet Server 监听在宿主机的80 端口,浏览器直接访问http://localhost即可打开登录/注册页;
  • 容器内部已经配置好 PostgreSQL,所有应用数据都会写入 Docker 卷tooljet_data,即使容器被删除,数据也不会丢失;
  • 你可以通过--env--env-file参数注入额外的环境变量,用来测试各种配置项(详见下文第三节与 环境变量完整参考);
  • 停止容器使用docker stop tooljet,之后再次启动使用docker start tooljet,数据依然完好。

三、端口自定义:把体验实例跑在任意端口

官方默认将服务绑定在 80 端口。如果你本机 80 端口已被占用,或希望多个实例并存,可以通过PORT环境变量配合端口映射实现动态端口,例如运行在 8080:

docker run \ --name tooljet \ --restart unless-stopped \ -p 8080:8080 \ -e PORT=8080 \ --platform linux/amd64 \ -v tooljet_data:/var/lib/postgresql/13/main \ -v temporal_sqlite:/etc/temporal \ tooljet/try:ee-latest

要点解读:

  • -p 8080:8080完成宿主机到容器内端口的映射;
  • -e PORT=8080PORT环境变量设置为 8080,ToolJet Server 据此监听 8080 端口。容器内的 Nginx 会通过代理把请求转发给该端口,从而保证前端、/api/与 WebSocket 链路一致工作;
  • 若改为其他端口(如 3000、9000),只需同步修改-p-e PORT两个位置即可。

从源码结构看,PORT是 ToolJet Server 的标准监听端口配置:在正式部署的 docker-compose 中同样以PORT: "80"显式声明(见 deploy/docker/docker-compose-db.yaml 中 tooljet 服务的 environment 段),说明该变量是贯穿体验镜像与生产编排的一致约定。

四、体验实例的内部启动流程

为了理解"一条命令为何能直接可用",可以观察容器的实际启动逻辑。体验镜像以 docker/ce-entrypoint.sh 作为入口,其工作流程大致如下:

  1. 检测 Redis 是否运行,未运行则用/app/redis.conf启动本地 Redis(仅绑定 127.0.0.1,protected-mode yes,配置生成逻辑见 docker/ce-production.Dockerfile 中的printf 'bind 127.0.0.1\nport 6379\n...');
  2. 若存在./.env则加载其中的环境变量;
  3. 根据server/dist是否存在选择生产或开发模式的数据库初始化命令(npm run db:setup:prodnpm run db:setup);
  4. 解析PG_HOST/PG_PORT(或从DATABASE_URL中提取),通过wait-for-it.sh等待 PostgreSQL 就绪后执行数据库初始化(建表、迁移、种子数据);
  5. 数据库就绪后,exec "$@"执行镜像定义的最终命令(启动 ToolJet Server 与 Nginx)。

这意味着首次启动会自动完成数据库建库、迁移与应用初始化,用户无需手动创建数据库或执行迁移命令,这也是体验镜像"开箱即用"的根本原因。镜像构建时还打包了 Oracle Instant Client、freetds 等驱动依赖(见 docker/ce-production.Dockerfile 的依赖安装段),为后续连接 Oracle、SQL Server 等外部数据源做好准备。

五、体验阶段最值得关注的环境变量

通过-e KEY=VALUE--env-file .env注入环境变量,可以在不重建容器的情况下测试平台的各种行为。下表整理自 环境变量参考文档,是本地体验阶段最常用、影响最直接的几组:

变量是否必需说明
TOOLJET_HOST必需ToolJet 客户端的公网地址,例如https://app.tooljet.com;本地试玩可设为http://localhost
LOCKBOX_MASTER_KEY必需32 字节十六进制字符串,用于加密数据源凭据;可用openssl rand -hex 32生成
SECRET_KEY_BASE必需64 字节十六进制字符串,用于加密会话 Cookie;可用openssl rand -hex 64生成
PORT可选Server 监听端口,默认 80,动态端口部署时需与-p同步
DISABLE_SIGNUPS可选设为true禁止开放注册,仅允许邀请加入(体验页仍可见但无法提交)
DISABLE_TOOLJET_TELEMETRY可选设为true关闭匿名使用统计上报
CHECK_FOR_UPDATES可选设为0关闭每 24 小时的产品更新检查
USER_SESSION_EXPIRY可选用户会话过期时间(分钟),默认 10 天,例如设为120即 2 小时
LANGUAGE可选默认语言代码,如enfreszh

提示:tooljet/try体验镜像内部已预置好可用的数据库与密钥配置,日常试玩可直接使用默认命令;上述变量主要用于按需测试行为开关(如禁用注册、关闭遥测)或为后续正式部署做准备。正式部署时,官方脚本 deploy/docker/internal.sh 会自动用openssl rand生成LOCKBOX_MASTER_KEYSECRET_KEY_BASEPGRST_JWT_SECRET与数据库密码,与文档中的生成建议一致。

六、环境前提与进阶阅读

运行前提

体验镜像面向 Linux x86_64(64 位)平台,具体参考 系统要求文档:

  • 操作系统:任意 Linux 发行版(x86 架构,arm64 不受支持);Windows 用户建议使用 WSL2 或虚拟机;
  • 资源:建议至少 2GB 内存、1 vCPU、8GiB 磁盘(本地试玩按需调整即可);
  • 软件:安装 Docker 引擎(并确保当前用户有权限执行docker命令,Linux 下必要时使用sudo);
  • 数据库:体验镜像内置 PostgreSQL 13,无需单独安装。

体验之后:从"试玩"走向"正式部署"

体验镜像适合快速验证功能,若要将 ToolJet 用于长期运行或生产环境,建议参考以下仓库内文档:

  • Docker Compose 生产部署:提供"内置 PostgreSQL"与"外部 PostgreSQL(如 AWS RDS、Cloud SQL)"两种编排方式,配合 docker-compose-db.yaml 模板 使用;
  • 环境变量完整参考:涵盖 Server、Client、PostgREST、SSO、SMTP、ToolJet Database 等全部配置项;
  • 系统要求:正式部署前的硬件与操作系统核对清单;
  • 其余部署方式(Kubernetes、Helm、云平台等)可在 setup 目录 下按需查阅。

结语

tooljet/try:ee-latest体验镜像把 PostgreSQL、Temporal、Redis、Nginx 与 ToolJet Server 整合进单一容器,配合命名卷实现数据持久化,让开发者无需任何前置依赖即可在本地完整感受 ToolJet 的建站、工作流与 AI Agent 能力。掌握默认命令、PORT动态端口与常用环境变量这三件事,就足以支撑起一次顺畅的本地体验;当你想把它从"试玩"升级为"部署"时,仓库中的 docker-compose 模板与完整的 环境变量文档 已经为你铺好了下一步。

【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 🚀项目地址: https://gitcode.com/GitHub_Trending/to/ToolJet

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 16:52:19

用环境变量驱动极简导航页:华为开发者空间部署envlinks实战

1. 项目背景与方案选型解析1.1 为什么需要一个“极简导航页”先聊聊我做这个事的初衷。平时工作台上一堆服务:Git仓库、文档站、监控面板、NAS后台、路由器管理页、各种内部系统……浏览器书签栏早就塞满了,每次要找某个地址得翻半天,还不一定…

作者头像 李华
网站建设 2026/9/10 16:52:16

JAVA毕设项目:基于 Web 的实验室耗材库存管理系统的设计与实现 基于 Web 架构的实验室耗材全生命周期管理平台 (源码+文档,讲解、调试运行,定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/9/10 16:52:13

2026直播导播软件横评:vMix、OBS与DingCaster三国杀

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/10 16:52:11

OpenKylin 3.0深度体验:从安装到开发环境搭建的完整指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华