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

📅 2026/7/2 12:35:09
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:100001️⃣ 登录服务器 环境准备1.1 SSH 登录sshroot1.1.1.01.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_forward1echonet.ipv4.ip_forward1/etc/sysctl.conf# 网桥过滤modprobe br_netfilterecho1/proc/sys/net/bridge/bridge-nf-call-iptables# Redis 所需sysctl-wvm.overcommit_memory1echovm.overcommit_memory1/etc/sysctl.conf# TCP 连接队列sysctl-wnet.core.somaxconn1024echonet.core.somaxconn1024/etc/sysctl.conf# 应用所有配置sysctl-p2️⃣ Docker 镜像加速配置重要内网服务器无法直接访问 Docker Hub (registry-1.docker.io)必须配置国内镜像加速器。2.1 配置 Docker 镜像源mkdir-p/etc/dockercat/etc/docker/daemon.jsonEOF { registry-mirrors: [ https://docker.1ms.run, https://docker.xuanyuan.me, https://docker.m.daocloud.io ] } EOFsystemctl daemon-reload systemctl restartdocker# 验证dockerinfo|grep-A5Registry Mirrors2.2 推荐的国内镜像源2026年6月实测可用优先级镜像地址类型备注1https://docker.1ms.run商业速度快稳定性高2https://docker.xuanyuan.me公益免费但有配额3https://docker.m.daocloud.io公益老牌服务有白名单限制3️⃣ 上传并配置文件3.1 创建部署目录mkdir-p/opt/budibase3.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_KEY和JWT_SECRET。。3.4 修改 docker-compose.yml重要将 Redis 镜像固定版本避免拉取不匹配的redis:latestcd/opt/budibase# 将 image: redis 改为 image: redis:7-alpinesed-is/image: redis$/image: redis:7-alpine/docker-compose.yml4️⃣ 拉取 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$source21;thendockertag$source$targetecho SUCCESS:$targetbreakfi[$attempt-lt20]sleep$((attempt*30))donedone4.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备选方案离线拉取镜像适用离线环境在外网机器上拉取并导出# 在外网机器上dockerpull docker.1ms.run/budibase/apps:latestdockertag docker.1ms.run/budibase/apps:latest budibase/apps:latestdockersave budibase/apps:latest-obudibase-apps.tar2.2.传输到内网服务器scpbudibase-*.tar root1.1.1.0:/opt/budibase/在内网服务器上导入cd/opt/budibasedockerload-ibudibase-apps.tar5️⃣ 启动服务5.1 初始化 Redis 数据卷# 创建 Redis 数据卷dockervolume create budibase_redis_data# 出现 Cant handle RDB format version 14 错误时dockercompose downdockervolumermbudibase_redis_data5.2 启动所有服务cd/opt/budibasedockercompose up-d5.3 检查服务状态dockerps-a期望看到 6 个容器全部Up容器名镜像状态bbproxybudibase/proxy✅ Up (端口 10000)bbappsbudibase/apps✅ Upbbworkerbudibase/worker✅ Upbudibase-couchdb-service-1budibase/database:2.1.0✅ Upbudibase-minio-service-1minio/minio✅ Up (healthy)budibase-redis-service-1redis:7-alpine✅ Up6️⃣ 验证 登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:100007️⃣ 数据备份与恢复含迁移备份原理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/budibasedockercompose 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备份文件可以直接用于迁移到另一台服务器步骤如下在服务器 A源服务器上执行备份cd/opt/budibasedockercompose 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把备份文件传到服务器 B新服务器# 在 A 上执行scp/root/budibase-*-migrate.tar.gz root新服务器IP:/root/在服务器 B 上先按照本文第 1-5 节完成 Budibase 部署确保 docker-compose.yml、.env 已就位Docker 镜像已拉取然后执行恢复cd/opt/budibasedockercompose 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验证迁移结果浏览器访问新服务器 IP:10000用原来的管理员账号登录数据和附件应该完整存在。迁移注意事项① 两个服务器的.env文件中的密码/密钥可以不同但建议保持一致② 如果改了API_ENCRYPTION_KEY或JWT_SECRET已加密的数据可能无法解密③ 迁移后需要在浏览器用新 IP 访问Budibase 会自动适应。实测验证结果验证项备份前删除后恢复后表格数量2 个含 ta_users1 个✅ 2 个数据行2 行1 行✅ 2 行MinIO 附件大小11 MB9.8 MB✅ 11 MBJPG 附件存在已删除✅ 恢复Web 访问正常正常✅ 正常8️⃣ 常用运维命令服务管理# 启动cd/opt/budibasedockercompose up-d# 停止cd/opt/budibasedockercompose down# 重启cd/opt/budibasedockercompose 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-port10000/tcp--permanentfirewall-cmd--reload