Docker 一条命令运行 NocoDB 并持久化数据到外部 PostgreSQL
通过 NC_DB 环境变量指向外部 PostgreSQL,数据不落在容器内 SQLite,JWT 密钥保证认证安全
方案简介
这是 NocoDB 官方 README 提供的「Docker with PG」部署方案:用一条 docker run 命令启动 NocoDB 容器,将本地目录挂载为数据卷,同时通过 NC_DB 环境变量连接外部 PostgreSQL 作为元数据库,并设置 NC_AUTH_JWT_SECRET 作为认证密钥。适合已有 PostgreSQL、希望以容器方式快速运行 NocoDB 且数据独立于容器的用户。
组成与分工
- NocoDB:核心应用,提供在线数据库构建能力,官方镜像为 nocodb/nocodb:latest
- PostgreSQL:外部元数据库,通过 pg:// 连接串接入
- Docker:容器运行时,-v 挂载 /usr/app/data/ 持久化数据,-p 8080:8080 暴露服务
前置要求
- 已安装 Docker
- 一个可访问的 PostgreSQL 实例(示例使用 host.docker.internal:5432,账号 root、库名 d1)
实施步骤
1. 准备 PostgreSQL
准备一个 NocoDB 可连接的 PostgreSQL 实例,记录主机、端口、用户、密码与库名。
2. 运行 NocoDB 容器
使用官方命令启动,按需修改 NC_DB 中的主机、账号、密码、库名以及 NC_AUTH_JWT_SECRET:
bash
docker run -d \
--name noco \
-v "$(pwd)"/nocodb:/usr/app/data/ \
-p 8080:8080 \
-e NC_DB="pg://host.docker.internal:5432?u=root&p=password&d=d1" \
-e NC_AUTH_JWT_SECRET="569a1821-0a93-45e8-87ab-eb857f20a010" \
nocodb/nocodb:latest
3. 访问验证
启动后访问 http://localhost:8080/dashboard 即可使用(材料在本地运行说明中给出该地址)。
使用与配置要点
- NC_DB:指定 PostgreSQL 连接串,格式为 pg://host:port?u=用户&p=密码&d=库名
- NC_AUTH_JWT_SECRET:设置 JWT 认证密钥,建议替换为自己的随机值
- 数据卷:将宿主机 ./nocodb 目录挂载到容器 /usr/app/data/ 实现持久化
- 端口:容器服务监听 8080,通过 -p 8080:8080 映射
优缺点
- ✓ 数据存外部 PG 更可靠
- ✓ 一条命令即可启动
- ✕ 需自行准备 PG 实例
- ✕ 示例连接串含明文密码
出处
本方案挖掘自开源项目 nocodb/nocodb,方案内容与实施命令均来自其 README 原文。
本方案由真实开源项目挖掘整理,实施命令均来自其 README 原文,安装使用请遵循项目开源协议。