Budibase 从零部署全攻略:基于Docker Compose的内网/离线环境部署方案

📅 2026/7/2 12:48:35 👁️ 阅读次数 📝 编程学习
Budibase 从零部署全攻略:基于Docker Compose的内网/离线环境部署方案

📋 部署概述

服务器信息

项目
IP 地址1.1.1.0
操作系统CentOS Linux 7 (Core)
内核版本3.10.0-1160.el7.x86_64
内存15 GB (可用 14 GB)
磁盘197 GB (可用 194 GB)
Docker 版本26.1.4 (Server: 20.10.24)
Docker Composev2.27.1
部署目录/opt/budibase
访问地址http://1.1.1.0:10000

1️⃣ 登录服务器 & 环境准备

1.1 SSH 登录

sshroot@1.1.1.0

1.2 检查环境

# 检查系统版本cat/etc/os-release# 检查 Dockerdocker--version# 期望: Docker version 26.xdockercompose version# 期望: Docker Compose version v2.x# 检查资源free-h# 建议 >= 8GB 内存df-h/# 建议 >= 50GB 磁盘

1.3 系统参数配置

# IP 转发sysctl-wnet.ipv4.ip_forward=1echo"net.ipv4.ip_forward=1">>/etc/sysctl.conf# 网桥过滤modprobe br_netfilterecho1>/proc/sys/net/bridge/bridge-nf-call-iptables# Redis 所需sysctl-wvm.overcommit_memory=1echo"vm.overcommit_memory=1">>/etc/sysctl.conf# TCP 连接队列sysctl-wnet.core.somaxconn=1024echo"net.core.somaxconn=1024">>/etc/sysctl.conf# 应用所有配置sysctl-p

2️⃣ Docker 镜像加速配置

重要:内网服务器无法直接访问 Docker Hub (registry-1.docker.io),必须配置国内镜像加速器。

2.1 配置 Docker 镜像源

mkdir-p/etc/dockercat>/etc/docker/daemon.json<<'EOF' { "registry-mirrors": [ "https://docker.1ms.run", "https://docker.xuanyuan.me", "https://docker.m.daocloud.io" ] } EOFsystemctl daemon-reload systemctl restartdocker# 验证dockerinfo|grep-A5"Registry Mirrors"

2.2 推荐的国内镜像源(2026年6月实测可用)

优先级镜像地址类型备注
🥇1https://docker.1ms.run商业速度快,稳定性高
🥈2https://docker.xuanyuan.me公益免费,但有配额
3https://docker.m.daocloud.io公益老牌服务,有白名单限制

3️⃣ 上传并配置文件

3.1 创建部署目录

mkdir-p/opt/budibase

3.2 需要上传的文件

文件路径说明
docker-compose.yml/opt/budibase/Docker Compose 编排文件
.env/opt/budibase/环境变量配置

3.3 .env 关键配置项

配置项说明
MAIN_PORT10000主访问端口
BB_ADMIN_USER_EMAIL设置邮箱管理员邮箱
BB_ADMIN_USER_PASSWORD[设置强密码]管理员密码
COUCH_DB_USER设置用户名CouchDB 用户名
COUCH_DB_PASSWORD[设置CouchDB密码]CouchDB 密码
REDIS_PASSWORD[设置Redis密码]Redis 密码
MINIO_ACCESS_KEY[设置MinIO访问密钥]MinIO 访问密钥
MINIO_SECRET_KEY[设置MinIO密钥]MinIO 密钥

安全提示:生产环境请务必修改所有默认密码!特别是API_ENCRYPTION_KEYJWT_SECRET

3.4 修改 docker-compose.yml(重要)

将 Redis 镜像固定版本,避免拉取不匹配的redis:latest

cd/opt/budibase# 将 "image: redis" 改为 "image: redis:7-alpine"sed-i's/image: redis$/image: redis:7-alpine/'docker-compose.yml

4️⃣ 拉取 Docker 镜像

内网拉取技巧:如果docker compose pull失败,可以逐个使用显式镜像源拉取。镜像前缀docker.1ms.run/会强制通过该代理下载。

4.1 逐镜像拉取脚本

由于镜像体积较大(总计约 3.2 GB),建议通过后台脚本逐个拉取:

#!/bin/bash# 逐一拉取并 tag 所有镜像declare-AIMGS=(["redis:7-alpine"]="docker.1ms.run/library/redis:7-alpine"["minio/minio:latest"]="docker.1ms.run/minio/minio:latest"["budibase/database:2.1.0"]="docker.1ms.run/budibase/database:2.1.0"["budibase/proxy:latest"]="docker.1ms.run/budibase/proxy:latest"["budibase/worker:latest"]="docker.1ms.run/budibase/worker:latest"["budibase/apps:latest"]="docker.1ms.run/budibase/apps:latest")fortargetin"${!IMGS[@]}";dosource="${IMGS[$target]}"echo">>> Pulling$target..."forattemptin$(seq120);doifdockerpull"$source"2>&1;thendockertag"$source""$target"echo" SUCCESS:$target"breakfi[$attempt-lt20]&&sleep$((attempt*30))donedone

4.2 镜像清单

#镜像大小用途
1redis:7-alpine39 MB缓存服务
2minio/minio:latest175 MB文件存储
3budibase/database:2.1.0815 MBCouchDB 数据库
4budibase/proxy:latest180 MB反向代理网关
5budibase/worker:latest704 MB后台任务处理
6budibase/apps:latest1.26 GB主应用服务
合计~3.2 GB

备选方案:离线拉取镜像(适用离线环境)

  1. 在外网机器上拉取并导出
# 在外网机器上dockerpull docker.1ms.run/budibase/apps:latestdockertag docker.1ms.run/budibase/apps:latest budibase/apps:latestdockersave budibase/apps:latest-obudibase-apps.tar

2.2.传输到内网服务器

scpbudibase-*.tar root@1.1.1.0:/opt/budibase/
  1. 在内网服务器上导入
cd/opt/budibasedockerload-ibudibase-apps.tar

5️⃣ 启动服务

5.1 初始化 Redis 数据卷

# 创建 Redis 数据卷dockervolume create budibase_redis_data# 出现 "Can't handle RDB format version 14" 错误时dockercompose downdockervolumermbudibase_redis_data

5.2 启动所有服务

cd/opt/budibasedockercompose up-d

5.3 检查服务状态

dockerps-a

期望看到 6 个容器全部Up

容器名镜像状态
bbproxybudibase/proxy✅ Up (端口 10000)
bbappsbudibase/apps✅ Up
bbworkerbudibase/worker✅ Up
budibase-couchdb-service-1budibase/database:2.1.0✅ Up
budibase-minio-service-1minio/minio✅ Up (healthy)
budibase-redis-service-1redis:7-alpine✅ Up

6️⃣ 验证 & 登

6.1 访问 Budibase

浏览器打开:http://1.1.1.0:10000

首次访问会自动跳转到/builder页面。

6.2 管理员登录

项目
邮箱`
密码``

6.3 curl 验证

# 从服务器本地测试curl-Ihttp://localhost:10000# 应返回 HTTP 301 -> /builder# 从其他机器测试curl-Ihttp://1.1.1.0:10000

7️⃣ 数据备份与恢复(含迁移)

备份原理

Budibase 的数据存在两个地方:

存储Docker 数据卷存放内容
CouchDBbudibase_couchdb3_data表格结构、数据行、用户、角色、应用配置
MinIObudibase_minio_data附件(图片、文件)、应用前端资源
Redisbudibase_redis_data缓存(不需要备份

核心思路:把两个 Docker 数据卷打包成 tar.gz 文件,需要恢复或迁移时解压回去即可。备份的是原始数据文件,100% 完整。

备份步骤(在服务器上执行)

# 1. 创建备份目录mkdir-p/backup# 2. 停止所有 Budibase 容器cd/opt/budibasedockercompose down# 3. 备份 CouchDB 数据卷(表格、数据、用户等)tarczf /backup/budibase-couchdb-$(date+%Y%m%d-%H%M).tar.gz\-C/var/lib/docker/volumes budibase_couchdb3_data# 4. 备份 MinIO 数据卷(附件、图片、文件)tarczf /backup/budibase-minio-$(date+%Y%m%d-%H%M).tar.gz\-C/var/lib/docker/volumes budibase_minio_data# 5. 查看备份文件ls-lh/backup/# 示例输出:# budibase-couchdb-20260701-0915.tar.gz 34K# budibase-minio-20260701-0915.tar.gz 2.4M# 6. 重新启动服务dockercompose up-d

⚠️注意:备份时需要停止 Budibase 服务,确保 CouchDB 数据一致性。整个备份过程约 1-2 分钟。

恢复步骤(在当前服务器上恢复)

# 1. 停止服务cd/opt/budibase&&dockercompose down# 2. 删除旧数据卷(⚠️ 确认备份文件存在后再执行)dockervolumermbudibase_couchdb3_data budibase_minio_data budibase_redis_data# 3. 解压备份文件tarxzf /backup/budibase-couchdb-20260701-0915.tar.gz\-C/var/lib/docker/volumes/tarxzf /backup/budibase-minio-20260701-0915.tar.gz\-C/var/lib/docker/volumes/# 4. 启动服务dockercompose up-d# 5. 等待服务就绪后验证sleep10dockerps# 确认 6 个容器都 Upcurl-Ihttp://localhost:10000# 返回 301 即正常

用于迁移:从服务器 A 迁移到服务器 B

备份文件可以直接用于迁移到另一台服务器,步骤如下:

  1. 在服务器 A(源服务器)上执行备份
cd/opt/budibase&&dockercompose downtarczf /root/budibase-couchdb-migrate.tar.gz-C/var/lib/docker/volumes budibase_couchdb3_datatarczf /root/budibase-minio-migrate.tar.gz-C/var/lib/docker/volumes budibase_minio_data
  1. 把备份文件传到服务器 B(新服务器)
# 在 A 上执行:scp/root/budibase-*-migrate.tar.gz root@新服务器IP:/root/
  1. 在服务器 B 上,先按照本文第 1-5 节完成 Budibase 部署(确保 docker-compose.yml、.env 已就位,Docker 镜像已拉取),然后执行恢复:
cd/opt/budibase&&dockercompose downdockervolumermbudibase_couchdb3_data budibase_minio_data budibase_redis_datatarxzf /root/budibase-couchdb-migrate.tar.gz-C/var/lib/docker/volumes/tarxzf /root/budibase-minio-migrate.tar.gz-C/var/lib/docker/volumes/dockercompose up-d
  1. 验证迁移结果:浏览器访问新服务器 IP:10000,用原来的管理员账号登录,数据和附件应该完整存在。

迁移注意事项
① 两个服务器的.env文件中的密码/密钥可以不同,但建议保持一致
② 如果改了API_ENCRYPTION_KEYJWT_SECRET,已加密的数据可能无法解密;
③ 迁移后需要在浏览器用新 IP 访问,Budibase 会自动适应。

实测验证结果

验证项备份前删除后恢复后
表格数量2 个(含 ta_users)1 个✅ 2 个
数据行2 行1 行✅ 2 行
MinIO 附件大小11 MB9.8 MB✅ 11 MB
JPG 附件存在已删除✅ 恢复
Web 访问正常正常✅ 正常

8️⃣ 常用运维命令

服务管理

# 启动cd/opt/budibase&&dockercompose up-d# 停止cd/opt/budibase&&dockercompose down# 重启cd/opt/budibase&&dockercompose restart# 查看日志(所有服务)dockercompose logs-f# 查看单个服务日志dockerlogs-fbbapps# 查看资源使用dockerstats

数据备份

# 查看数据卷dockervolumels|grepbudibase# 备份 CouchDB 数据dockerrun--rm-vbudibase_couchdb3_data:/data-v/backup:/backup\alpinetarczf /backup/couchdb-backup-$(date+%Y%m%d).tar.gz /data# 备份 MinIO 数据dockerrun--rm-vbudibase_minio_data:/data-v/backup:/backup\alpinetarczf /backup/minio-backup-$(date+%Y%m%d).tar.gz /data

端口防火墙(如需要)

# firewalldfirewall-cmd --add-port=10000/tcp--permanentfirewall-cmd--reload