logo
0
0
WeChat Login

SchemaForge

SchemaForge 是一个面向 Oracle Database 11g Express Edition 的自助数据库实验环境管理平台。

每个实验环境对应一个 Oracle schema/user。平台用户使用学号登录,管理员导入用户并重置平台密码,普通用户管理自己的数据库环境。

技术栈

  • Nuxt 4 + Nuxt UI
  • node-oracledb thick mode
  • Drizzle ORM + SQLite
  • docker compose

当前范围

  • SQLite 只保存平台用户、登录会话和轻量审计日志
  • Oracle schema 不落平台库,统一以 Oracle 实时查询为准
  • schema 命名规则为 S<学号>_<随机后缀>
  • 单用户最大环境数默认 4
  • 单环境 quota 默认 50MB

详细设计见 docs/init.mddocs/env.md

本地开发

  1. 安装依赖
pnpm install
  1. 复制环境变量
cp .env.example .env

请先手动填写 .env 中留空的敏感配置,至少包括 APP_SECRETINIT_ADMIN_PASSORA_PASS。 使用 docker compose 时,ORA_PASS 会同时作为 Oracle 容器初始化密码和 SchemaForge 的管理员连接密码。 INIT_ADMIN_PASS 只用于首次创建管理员账号,后续管理员密码应在页面内修改。

  1. 启动开发服务器
pnpm dev

本地开发默认使用 DB_PATH=./data/schemaforge.db。 如果通过局域网 HTTP 地址访问,请保持 APP_URLhttp://...,或显式设置 APP_COOKIE_SECURE=false,否则浏览器会拒绝带 Secure 的 session cookie。

Docker Compose

项目提供 docker-compose.yml,用于同时启动:

  • oracle-xe-11g
  • schemaforge

其中:

  • oracle-xe-11g 使用 Docker named volume oracle-data 持久化 /u01/app/oracle/oradata
  • schemaforgeuid 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

About

No description, topics, or website provided.
894.00 KiB
0 forks0 stars1 branches0 TagREADMEMIT license
Language
TypeScript52.3%
Vue44.9%
Dockerfile1.6%
CSS1%
Others0.2%