SchemaForge 是一个面向 Oracle Database 11g Express Edition 的自助数据库实验环境管理平台。
每个实验环境对应一个 Oracle schema/user。平台用户使用学号登录,管理员导入用户并重置平台密码,普通用户管理自己的数据库环境。
- Nuxt 4 + Nuxt UI
node-oracledbthick mode- Drizzle ORM + SQLite
docker compose
- SQLite 只保存平台用户、登录会话和轻量审计日志
- Oracle schema 不落平台库,统一以 Oracle 实时查询为准
- schema 命名规则为
S<学号>_<随机后缀> - 单用户最大环境数默认
4 - 单环境 quota 默认
50MB
详细设计见 docs/init.md 和 docs/env.md。
- 安装依赖
pnpm install- 复制环境变量
cp .env.example .env请先手动填写 .env 中留空的敏感配置,至少包括 APP_SECRET、INIT_ADMIN_PASS 和 ORA_PASS。
使用 docker compose 时,ORA_PASS 会同时作为 Oracle 容器初始化密码和 SchemaForge 的管理员连接密码。
INIT_ADMIN_PASS 只用于首次创建管理员账号,后续管理员密码应在页面内修改。
- 启动开发服务器
pnpm dev本地开发默认使用 DB_PATH=./data/schemaforge.db。
如果通过局域网 HTTP 地址访问,请保持 APP_URL 为 http://...,或显式设置 APP_COOKIE_SECURE=false,否则浏览器会拒绝带 Secure 的 session cookie。
项目提供 docker-compose.yml,用于同时启动:
oracle-xe-11gschemaforge
其中:
oracle-xe-11g使用 Docker named volumeoracle-data持久化/u01/app/oracle/oradataschemaforge以uid 1000运行schemaforge容器内的 SQLite 固定写入/data/schemaforge.db,对应宿主机./data/app/schemaforge.db- 应用镜像会从
ghcr.io/oracle/oraclelinux9-instantclient:19拷贝 Oracle Instant Client,并在镜像内配置ldconfig - 应用镜像使用 multi-stage 构建,运行时只保留生产依赖和 Nuxt 产物
- 登录接口默认启用基础限速,CSV 导入默认限制为
1MB / 2000行,可通过环境变量调整
首次部署前请先根据 docs/env.md 配置 .env。构建应用镜像时需要能拉取 ghcr.io/oracle/oraclelinux9-instantclient:19。
如果要使用预构建镜像部署版 Compose,请看 deploy/README.md。