docker部署tooljet是最轻量可控的方式,适合本地开发、内网搭建及小规模生产;需预先安装docker engine 24.0+和docker compose v2.x。

用 Docker 部署 ToolJet 是目前最轻量、最可控的方式,尤其适合本地开发、团队内网搭建或小规模生产环境。它不用手动装 Node.js、PostgreSQL、Redis,所有依赖都打包进容器,一条命令就能拉起完整服务。
确认基础环境是否就绪
部署前请确保服务器或本机已安装:
- Docker Engine 24.0 或更高版本(运行
docker --version验证) - Docker Compose v2.x(新版 Docker Desktop 默认集成,独立安装可查
docker compose version)
推荐方式:用 docker-compose 快速启动(含数据库)
这是官方推荐、稳定性高、便于后续扩展的部署方式。无需手动拉镜像或写复杂 run 命令。
新建一个目录,例如 tooljet-deploy,在里面创建 docker-compose.yml 文件:
version: '3.8'
services:
db:
image: postgres:13
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: tooljet
volumes:
- db-data:/var/lib/postgresql/data
restart: unless-stopped
<p>redis:
image: redis:7-alpine
command: redis-server --save 20 1 --loglevel warning
restart: unless-stopped</p><p>server:
image: tooljet/tooljet:latest
depends_on:</p>
- db
- redis environment:
- DATABASE_URL=postgresql://postgres:postgres@db:5432/tooljet
- REDIS_URL=redis://redis:6379
- NODE_ENV=production
- TOOLJET_HOST=0.0.0.0
- TOOLJET_PORT=3000
- JWT_SECRET=your_strong_jwt_secret_here # 必填!建议用 openssl rand -base64 32 生成 ports:
- "3000:3000" volumes:
- tooljet_storage:/home/tooljet/storage restart: unless-stopped
volumes: db-data: tooljet_storage:
保存后,在该目录下执行:
docker compose up -d
等待约 30 秒,运行 docker compose logs -f server 查看启动日志,出现 Server running on http://0.0.0.0:3000 即表示成功。
浏览器访问 http://你的服务器IP:3000,首次打开会引导完成管理员账户注册和工作区初始化。
简易方式:单容器快速试用(无持久化)
仅用于临时体验或测试,不建议用于正式使用:
docker run \ --name tooljet \ --restart unless-stopped \ -p 3000:3000 \ -e DATABASE_URL=sqlite:///tmp/tooljet.db \ -e NODE_ENV=production \ -e TOOLJET_HOST=0.0.0.0 \ -e TOOLJET_PORT=3000 \ -e JWT_SECRET=dev-secret-change-in-prod \ tooljet/tooljet:latest
注意:此方式使用 SQLite,数据随容器删除而丢失;且不包含 Redis,部分高级功能(如实时协作、队列任务)不可用。
关键配置与安全提醒
正式部署务必注意以下几点:
-
JWT_SECRET 必须更换:默认值会导致会话被伪造,建议用随机字符串(如
openssl rand -base64 32) - 不要暴露 3000 端口到公网:如需外网访问,请配合 Nginx 反向代理 + HTTPS,或使用内网穿透工具(如 frp、路由侠)并设置访问白名单
-
数据库密码应与 .env 中一致:若修改了
POSTGRES_PASSWORD,必须同步更新DATABASE_URL中的密码字段 -
首次启动后勿直接删容器:PostgreSQL 数据存在命名卷
db-data中,删除容器不影响数据;但删卷会清空全部应用数据和用户信息











