ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

ToolJet 在 Azure Container Apps 上的完整部署指南(自托管 LTS 版)

ToolJet 在 Azure Container Apps 上的完整部署指南(自托管 LTS 版) ToolJet 在 Azure Container Apps 上的完整部署指南自托管 LTS 版【免费下载链接】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 v2.50.0-LTS 官方文档完整讲解如何在微软 Azure 云平台的Container Apps容器应用服务上自托管部署 ToolJet包括前置依赖的规划PostgreSQL 与 Redis、容器应用的创建与镜像/命令覆写、10 项必备环境变量的配置、Ingress 端口设置、Azure Cache for Redis 的搭建以及后续升级到最新 LTS 版本的注意事项。读完本文你将获得一套可直接照着操作的 Azure 云上 ToolJet 生产级部署方案并能从仓库源码层面理解每个关键配置项背后究竟做了什么。适用前提本文面向 ToolJetv2.50.0-LTS自托管部署场景。文中所有配置、镜像标签与升级要求均以当前仓库中该版本文档为准。部署前的依赖规划在开始创建 Azure 容器应用之前必须明确 ToolJet 的运行时依赖。官方文档开篇就给出了两个硬性前置条件PostgreSQL 数据库需要你在 Azure 上或任何可达位置手动创建并维护ToolJet 自身不负责托管数据库Redis 服务需要通过Azure Cache for Redis创建用于支持 ToolJet 的多人协同编辑multiplayer editing与后台任务background jobs。这并非可选项。从仓库的部署脚本可以印证这一点ToolJet 的服务器进程在启动前会等待 PostgreSQL 就绪并依赖 Redis 支撑实时协作等能力。因此先把这两项基础设施准备就绪再进入容器应用创建流程是最稳妥的顺序。一、创建 ToolJet 容器应用1. 进入创建向导登录 Azure 门户导航到Container Apps服务点击Create container app进入创建向导随后选择正确的订阅subscription并填写基础信息例如容器应用名称container name、资源组等。2. 关闭快速启动镜像指定 ToolJet 镜像进入Container标签页后需要取消勾选 Use quickstart image使用快速启动镜像改为手动选择镜像来源镜像来源选择 Docker Hub 或其它注册表Registry镜像与标签填写 ToolJet 官方镜像及对应版本标签。ToolJet 官方镜像位于 Docker Hub 的tooljet/tooljet仓库下LTS 版本标签遵循LTS-前缀的命名约定例如tooljet/tooljet:EE-LTS-latest建议在生产环境固定到具体 LTS 版本号而非latest以便于升级追溯。关键操作命令覆写Command override。创建容器应用时必须在Command override字段中填入server/entrypoint.sh, npm, run, start:prod这段配置在 Azure Container Apps 中会以逗号分隔的形式覆盖容器的默认启动命令其含义与仓库源码中的容器编排方式完全一致server/entrypoint.sh指向 ce-entrypoint.sh它是 ToolJet 生产镜像的ENTRYPOINT见 ce-production.Dockerfile 中的COPY ./docker/ce-entrypoint.sh ./app/server/entrypoint.sh与ENTRYPOINT [./server/entrypoint.sh]。该脚本负责加载.env、通过wait-for-it.sh等待 PostgreSQL 就绪并依次执行数据库建库/迁移db:setup系列脚本npm, run, start:prod等价于执行 server/package.json 中定义的start:prod: NODE_ENVproduction node dist/src/main即以生产模式启动编译后的 NestJS 服务端。也就是说这行命令覆写完整复刻了 ToolJet 官方docker-compose部署中command: npm run start:prod的行为参见 deploy/docker/docker-compose.yaml。3. 配置环境变量核心步骤在Environmental variable环境变量区域添加 ToolJet 运行所需的变量。官方文档明确指出ToolJet 必须具备以下 10 个环境变量环境变量用途说明TOOLJET_DBToolJet Database内置数据存储的数据库名默认值为tooljet_dbTOOLJET_DB_HOSTToolJet Database 的数据库主机TOOLJET_DB_USERToolJet Database 的数据库用户名TOOLJET_DB_PASSToolJet Database 的数据库密码PG_HOST主 PostgreSQL 数据库主机PG_DB主数据库名称PG_USER数据库用户名PG_PASS数据库密码SECRET_KEY_BASE用于加密会话 Cookie 的安全密钥64 字节十六进制字符串LOCKBOX_KEY用于加密数据源凭据的 Lockbox 主密钥关于LOCKBOX_KEY与LOCKBOX_MASTER_KEY的说明本部署文档的环境变量清单中写为LOCKBOX_KEY而官方 环境变量文档 中正式定义的变量名为LOCKBOX_MASTER_KEY要求 32 字节十六进制字符串。从源码可以确认加密服务在运行时读取的正是LOCKBOX_MASTER_KEYencryption/service.ts 中#computeAttributeKey通过process.env.LOCKBOX_MASTER_KEY获取主密钥再经 HKDF 派生各字段的独立加密密钥使用 AES-256-GCM 完成数据源凭据等敏感信息的加解密。因此在实际配置时建议将文档清单中的LOCKBOX_KEY落实为LOCKBOX_MASTER_KEY避免因变量名不一致导致加密模块拿不到密钥。除上述必备变量外官方建议至少补充TOOLJET_HOSTToolJet 客户端的公网 URL必填项。完整的变量字典可参考 环境变量文档其中常用的可选变量还包括PG_PORTPostgreSQL 端口默认5432TOOLJET_DB_PORTToolJet Database 端口PGRST_JWT_SECRET/PGRST_HOST启用ENABLE_TOOLJET_DB时 PostgREST 所需的认证密钥与主机ENABLE_TOOLJET_DBtrue/false控制是否启用 ToolJet 内置数据存储DISABLE_SIGNUPStrue时仅允许邀请注册CHECK_FOR_UPDATES、DISABLE_TOOLJET_TELEMETRY用于关闭自动更新检查与遥测USER_SESSION_EXPIRY会话过期时间分钟默认 10 天SMTP 系列DEFAULT_FROM_EMAIL、SMTP_USERNAME、SMTP_PASSWORD、SMTP_DOMAIN、SMTP_PORT用于发送邀请邮件等。密钥生成方法SECRET_KEY_BASE与LOCKBOX_MASTER_KEY属于高敏感密钥建议使用openssl随机生成避免使用弱口令# LOCKBOX_MASTER_KEY32 字节十六进制 openssl rand -hex 32 # SECRET_KEY_BASE64 字节十六进制 openssl rand -hex 64从源码看SECRET_KEY_BASE承担着会话安全的关键职责会话模块用其签名/验证登录态session/module.tsJWT 策略用其作为secretOrKey校验访问令牌jwt.strategy.ts。因此该密钥一旦变更所有已签发的会话将立即失效务必妥善保管并纳入密钥管理。4. 配置 Ingress 与认证在Ingress标签页中按需配置 Ingress外部访问入口与 Authentication认证设置安全相关配置可根据自身安全策略定制。务必确认目标端口target port设置为3000——这是 ToolJet 服务端监听的默认端口根目录 docker-compose.yaml 中ports: - 3000:3000亦印证了这一点。5. 复核并创建点击Review create等待模板校验通过后完成创建。创建成功后可在Revision management修订管理中查看容器应用的运行状态确认部署是否健康。6. 访问 ToolJet部署完成后通过容器应用Overview概览标签页中提供的Application URL即可访问 ToolJet 实例。二、搭建 RedisAzure Cache for RedisToolJet 依赖 Redis 实现多人协同编辑与后台任务前文已述若已有 Redis 可直接复用现有配置否则按以下步骤在 Azure 上新建创建 Redis 实例Create a Redis instance选择满足最小规格要求的套餐选择网络设置Choose Network Settings根据你的网络拓扑如虚拟网络、公共端点等选择合适配置配置 TLS 端口Configure TLS Port按需启用 TLS 端口以保障传输安全生产环境建议启用复核并创建Review and Create确认配置无误后创建实例。创建完成后将 Redis 的连接信息主机、端口、访问密钥以环境变量的形式注入 ToolJet 容器应用。Azure Cache for Redis 的默认端口为6379与仓库根目录 docker-compose.yaml 中REDIS_HOSTredis/REDIS_PORT6379的开发配置一致。三、升级到最新 LTS 版本ToolJet 每3–5 个月发布一个新的 LTS 版本每个 LTS 版本的生命周期end-of-life至少为 18 个月。LTS 镜像标签遵循LTS-前缀命名约定例如tooljet/tooljet:EE-LTS-latest可在 ToolJet 官方 Docker Hub 镜像的 tags 页面查询最新版本。注意以下升级流程仅适用于已运行的存量实例全新安装直接使用最新版本即可无需执行升级步骤。升级前置条件务必备份数据库升级前必须对数据库进行完整备份防止数据丢失——这是所有升级操作的第一步也是最重要的一步版本门槛若当前版本早于v2.23.0-ee2.10.2必须先升级到该版本才能继续向 LTS 版本升级。升级操作要点在 Azure Container Apps 中升级本质上就是更新容器镜像标签并触发新的修订revision将镜像标签改为目标 LTS 版本号保存后平台会基于新镜像创建修订并逐步切流。升级期间请关注 Revision management 中的健康检查结果并预留数据库迁移由entrypoint.sh中的db:migrate流程在启动时自动执行所需的停机窗口。四、常见问题与排查建议容器反复重启/启动失败优先检查Command override是否与文档完全一致server/entrypoint.sh, npm, run, start:prod以及 10 个必备环境变量是否齐全。entrypoint.sh会严格等待PG_HOST默认端口5432就绪数据库不可达会导致启动流程阻塞乃至失败数据源凭据解密报错多因LOCKBOX_MASTER_KEY未配置或前后不一致所致——加密服务对每个字段的密钥都是基于该主密钥派生encryption/service.ts更换主密钥将导致历史密文无法解密外部无法访问确认 Ingress 已启用且目标端口为3000协同编辑不可用检查 Redis 连接配置主机、端口、访问密钥确保容器应用与 Azure Cache for Redis 之间的网络可达首次启动较慢首次启动会执行建库与迁移脚本npm run db:setup期间请耐心等待日志输出完成再判定故障。结语在 Azure Container Apps 上部署 ToolJet 的核心可以概括为三件事备好 PostgreSQL 与 Redis、用命令覆写正确启动服务端、配齐 10 个必备环境变量外加TOOLJET_HOST。本文涉及的配置细节均可在仓库中找到源码级佐证——从 ce-production.Dockerfile 与 ce-entrypoint.sh 可还原容器的真实启动链路从 encryption/service.ts 与 session/module.ts 可理解密钥变量的底层作用从 env-vars.md 可查询全部可选变量的完整字典。按本文步骤操作即可获得一个生产可用的 ToolJet LTS 实例并为后续平滑升级打下基础。【免费下载链接】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),仅供参考
返回列表