一、NocoBase 简介
NocoBase 是一个低代码开发平台,旨在帮助开发者和企业快速构建、部署和管理应用程序。它通过可视化的界面和强大的插件系统,让开发者无需编写大量代码即可完成复杂的应用开发。NocoBase 支持多种数据库(如 PostgreSQL、MySQL、MariaDB 等),并提供了丰富的数据建模和管理功能。
二、Docker Compose 部署 NocoBase
(一)准备工作
-
安装 Docker 和 Docker Compose
确保你的系统已经安装了 Docker 和 Docker Compose。如果尚未安装,可以访问 Docker 官网 下载并安装。 -
创建项目目录
在本地创建一个目录,用于存放 NocoBase 的配置文件和数据:bash复制
mkdir my-nocobase && cd my-nocobase
(二)编写 docker-compose.yml
文件
在项目目录中创建一个 docker-compose.yml
文件,并根据以下内容进行配置:
yaml复制
version: '3'
networks:
nocobase:
driver: bridge
services:
app:
image: registry.cn-shanghai.aliyuncs.com/nocobase/nocobase:latest
restart: always
networks:
- nocobase
depends_on:
- mysql
environment:
# 应用的密钥,用于生成用户 token 等
# 如果 APP_KEY 修改了,旧的 token 也会随之失效
# 可以是任意随机字符串,并确保不对外泄露
- APP_KEY=your-secret-key
# 数据库类型,支持 postgres, mysql, mariadb, sqlite
- DB_DIALECT=mysql
# 数据库主机,可以替换为已有的数据库服务器 IP
- DB_HOST=mysql
# 数据库名
- DB_DATABASE=nocobase
# 数据库用户
- DB_USER=root
# 数据库密码
- DB_PASSWORD=nocobase
# 数据库表名、字段名是否转为 snake case 风格
- DB_UNDERSCORED=true
# 时区
- TZ=Asia/Shanghai
# 商业插件,使用 service platform 的账号信息
- NOCOBASE_PKG_USERNAME=
- NOCOBASE_PKG_PASSWORD=
volumes:
- ./storage:/app/nocobase/storage
ports:
- '13000:80'
# init: true
# 如果使用已有数据库服务,可以不启动 mysql
mysql:
image: registry.cn-shanghai.aliyuncs.com/nocobase/mysql:8
environment:
MYSQL_DATABASE: nocobase
MYSQL_USER: nocobase
MYSQL_PASSWORD: nocobase
MYSQL_ROOT_PASSWORD: nocobase
restart: always
volumes:
- ./storage/db/mysql:/var/lib/mysql
networks:
- nocobase
(三)启动 NocoBase
在项目目录下运行以下命令,启动 NocoBase 服务:
bash复制
# 拉取最新镜像
$ docker-compose pull
# 在后台运行
$ docker-compose up -d
# 查看 app 进程的情况
$ docker-compose logs app
time="2025-02-26T21:39:46+08:00" level=warning msg="D:\\nocobase\\my-project\\docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion"
app-1 | cat: /app/commit_hash.txt: No such file or directory
app-1 | COMMIT_HASH:
app-1 | copying...
app-1 | yarn run v1.22.22
app-1 | $ nocobase create-nginx-conf
app-1 | Done in 0.34s.
app-1 | nginx started
app-1 | yarn run v1.22.22
app-1 | $ nocobase start --quickstart
app-1 | 2025-02-26T21:39:44: PM2 log: Launching in no daemon mode
app-1 | 2025-02-26T21:39:44: PM2 log: App [index:0] starting in -fork mode-
app-1 | 2025-02-26T21:39:44: PM2 log: App [index:0] online
app-1 | Gateway IPC Server running at /root/.nocobase/gateway.sock
app-1 | Gateway HTTP Server running at http://0.0.0.0:13000/
app-1 | {"level":"info","message":"add app main into supervisor","meta":{},"module":"application","submodule":"supervisor","method":"addApp","app":"main","reqId":"95c80d0f-c234-4f84-a5af-64f77d2c97da","dataSourceKey":"main","timestamp":"2025-02-26 21:39:47"}
app-1 | {"level":"warn","message":"attempt 1/9: Unable to connect to the database: connect ECONNREFUSED 172.25.0.2:3306","meta":{},"module":"database","submodule":"","method":"auth","app":"main","reqId":"95c80d0f-c234-4f84-a5af-64f77d2c97da","dataSourceKey":"main","timestamp":"2025-02-26 21:39:47"}
app-1 | {"level":"warn","message":"will retry in 50ms...","meta":{},"module":"database","submodule":"","method":"auth","app":"main","reqId":"95c80d0f-c234-4f84-a5af-64f77d2c97da","dataSourceKey":"main","timestamp":"2025-02-26 21:39:47"}
app-1 | {"level":"warn","message":"attempt 2/9: Unable to connect to the database: connect ECONNREFUSED 172.25.0.2:3306","meta":{},"module":"database","submodule":"","method":"auth","app":"main","reqId":"95c80d0f-c234-4f84-a5af-64f77d2c97da","dataSourceKey":"main","timestamp":"2025-02-26 21:39:47"}
app-1 | {"level":"warn","message":"will retry in 100ms...","meta":{},"module":"database","submodule":"","method":"auth","app":"main","reqId":"95c80d0f-c234-4f84-a5af-64f77d2c97da","dataSourceKey":"main","timestamp":"2025-02-26 21:39:47"}
app-1 | {"level":"warn","message":"attempt 3/9: Unable to connect to the database: connect ECONNREFUSED 172.25.0.2:3306","meta":{},"module":"database","submodule":"","method":"auth","app":"main","reqId":"95c80d0f-c234-4f84-a5af-64f77d2c97da","dataSourceKey":"main","timestamp":"2025-02-26 21:39:47"}
app-1 | {"level":"warn","message":"will retry in 200ms...","meta":{},"module":"database","submodule":"","method":"auth","app":"main","reqId":"95c80d0f-c234-4f84-a5af-64f77d2c97da","dataSourceKey":"main","timestamp":"2025-02-26 21:39:47"}
app-1 | {"level":"warn","message":"attempt 4/9: Unable to connect to the database: connect ECONNREFUSED 172.25.0.2:3306","meta":{},"module":"database","submodule":"","method":"auth","app":"main","reqId":"95c80d0f-c234-4f84-a5af-64f77d2c97da","dataSourceKey":"main","timestamp":"2025-02-26 21:39:47"}
app-1 | {"level":"warn","message":"will retry in 400ms...","meta":{},"module":"database","submodule":"","method":"auth","app":"main","reqId":"95c80d0f-c234-4f84-a5af-64f77d2c97da","dataSourceKey":"main","timestamp":"2025-02-26 21:39:47"}
app-1 | {"level":"warn","message":"attempt 5/9: Unable to connect to the database: connect ECONNREFUSED 172.25.0.2:3306","meta":{},"module":"database","submodule":"","method":"auth","app":"main","reqId":"95c80d0f-c234-4f84-a5af-64f77d2c97da","dataSourceKey":"main","timestamp":"2025-02-26 21:39:47"}
app-1 | {"level":"warn","message":"will retry in 800ms...","meta":{},"module":"database","submodule":"","method":"auth","app":"main","reqId":"95c80d0f-c234-4f84-a5af-64f77d2c97da","dataSourceKey":"main","timestamp":"2025-02-26 21:39:47"}
app-1 | {"level":"warn","message":"attempt 6/9: Unable to connect to the database: connect ECONNREFUSED 172.25.0.2:3306","meta":{},"module":"database","submodule":"","method":"auth","app":"main","reqId":"95c80d0f-c234-4f84-a5af-64f77d2c97da","dataSourceKey":"main","timestamp":"2025-02-26 21:39:48"}
app-1 | {"level":"warn","message":"will retry in 1600ms...","meta":{},"module":"database","submodule":"","method":"auth","app":"main","reqId":"95c80d0f-c234-4f84-a5af-64f77d2c97da","dataSourceKey":"main","timestamp":"2025-02-26 21:39:48"}
启动完成后,打开浏览器,访问 http://localhost:13000
,即可看到 NocoBase 的登录界面。
(四)初始化账号
首次访问时,使用默认的管理员账号 admin@nocobase.com
和密码 admin123
登录。
三、应用场景
NocoBase 的应用场景非常广泛,以下是一些典型的使用场景:
-
快速搭建企业级应用
通过可视化的界面,开发者可以快速搭建任务管理系统、客户关系管理系统(CRM)、项目管理系统等。 -
数据建模与管理
使用 NocoBase 的 Data Source Manager 插件,可以轻松创建集合(表格)并定义字段,满足复杂的数据管理需求。 -
API 管理
NocoBase 支持自动生成 RESTful API,方便开发者快速构建和管理后端服务。
四、注意事项
-
安全性
-
APP_KEY
是用于生成用户 token 的密钥,必须确保其安全性。如果修改了APP_KEY
,旧的 token 将失效。 -
数据库密码和用户名应避免使用默认值,建议使用复杂的密码。
-
-
版本选择
-
推荐使用
latest
版本,该版本功能稳定,仅做缺陷修复。 -
如果需要测试新功能,可以选择
beta
或alpha
版本,但请注意这些版本可能存在不稳定因素。
-
-
数据持久化
在docker-compose.yml
中,通过挂载本地目录到容器的/app/nocobase/storage
,确保数据持久化。
五、总结
通过 Docker Compose 部署 NocoBase 是一种高效、便捷的方式。它不仅简化了安装过程,还提供了强大的功能支持,适用于各种开发场景。希望本文能帮助你快速上手 NocoBase,开启低代码开发之旅。