如果使用 deploy/.env.example 对应的预构建镜像部署版 Compose,则只需要填写部署目录中保留的变量;像 ORA_HOST、ORA_PORT、ORA_SERVICE、ORA_USER、DB_PATH 这类容器内部固定值不需要再配置。
用于运行 SchemaForge 本身。
APP_PORT
APP_URL
APP_SECRET
APP_COOKIE_SECURE
INIT_ADMIN_ID
INIT_ADMIN_PASS
说明:
| 变量 | 用途 |
|---|---|
| APP_PORT | Web 服务端口 |
| APP_URL | 平台访问地址(生成链接) |
| APP_SECRET | session / cookie 加密 |
| APP_COOKIE_SECURE | 是否强制给 session cookie 打 Secure |
| INIT_ADMIN_ID | 首次启动管理员学号 / 账号 |
| INIT_ADMIN_PASS | 首次初始化管理员密码 |
说明:
- 默认会根据
APP_URL自动判断:https://时开启Secure,http://时关闭 - 局域网或内网 IP 通过 HTTP 访问时,应保持
APP_COOKIE_SECURE=false APP_SECRET和INIT_ADMIN_PASS没有安全默认值,必须显式填写INIT_ADMIN_PASS仅在管理员账号不存在时使用一次,后续应通过页面修改管理员密码
SchemaForge 后端操作数据库使用的连接。
ORA_HOST
ORA_PORT
ORA_SERVICE
ORA_USER
ORA_PASS
示例:
ORA_HOST=oracle-xe-11g
ORA_PORT=1521
ORA_SERVICE=XE
ORA_USER=system
ORA_PASS=<required>
说明:
-
这个连接用于:
CREATE USERDROP USER- 查询用户
- 修改 quota
-
ORA_PASS没有默认值,必须显式填写 -
使用
docker compose时,ORA_PASS也会作为oracle-xe-11g的初始化密码注入ORACLE_PASSWORD
用户连接数据库可能走 不同地址(Docker / NAT / 域名)。
所以必须单独配置:
ORA_PUB_HOST
ORA_PUB_PORT
ORA_PUB_SERVICE
示例:
ORA_PUB_HOST=db.example.com
ORA_PUB_PORT=1521
ORA_PUB_SERVICE=XE
用户看到的连接:
jdbc:oracle:thin:@//db.example.com:1521/XE
而 SchemaForge 内部连接:
//oracle-xe-11g:1521/XE
控制 schema 创建策略。
ENV_PREFIX
ENV_MAX_PER_USER
ENV_QUOTA_MB
ENV_PASS_LEN
ENV_SUFFIX_LEN
ORA_TABLESPACE
ORA_TEMP_TABLESPACE
ORA_CLIENT_LIB_DIR
AUTH_LOGIN_MAX_ATTEMPTS
AUTH_LOGIN_WINDOW_MS
CSV_IMPORT_MAX_BYTES
CSV_IMPORT_MAX_ROWS
示例:
ENV_PREFIX=S
ENV_MAX_PER_USER=4
ENV_QUOTA_MB=50
ENV_PASS_LEN=12
ENV_SUFFIX_LEN=4
ORA_TABLESPACE=USERS
ORA_TEMP_TABLESPACE=TEMP
ORA_CLIENT_LIB_DIR=/opt/oracle/instantclient
AUTH_LOGIN_MAX_ATTEMPTS=5
AUTH_LOGIN_WINDOW_MS=600000
CSV_IMPORT_MAX_BYTES=1048576
CSV_IMPORT_MAX_ROWS=2000
说明:
| 变量 | 作用 |
|---|---|
| ENV_PREFIX | schema 前缀 |
| ENV_MAX_PER_USER | 每人最大环境数 |
| ENV_QUOTA_MB | 单环境 quota 大小(MB) |
| ENV_PASS_LEN | 自动生成 Oracle 密码长度 |
| ENV_SUFFIX_LEN | schema 随机后缀长度 |
| ORA_TABLESPACE | 业务 schema 默认表空间 |
| ORA_TEMP_TABLESPACE | 业务 schema 临时表空间 |
| ORA_CLIENT_LIB_DIR | thick mode Oracle Client 库路径 |
| AUTH_LOGIN_MAX_ATTEMPTS | 单个 IP + ID 登录窗口内最大失败次数 |
| AUTH_LOGIN_WINDOW_MS | 登录失败计数窗口(毫秒) |
| CSV_IMPORT_MAX_BYTES | 单次上传 CSV 最大字节数 |
| CSV_IMPORT_MAX_ROWS | 单次上传 CSV 最大行数 |
Docker Compose 默认方案:
oracle-xe-11g使用 Docker named volumeoracle-data持久化 Oracle 数据目录- 应用镜像会从
ghcr.io/oracle/oraclelinux9-instantclient:19拷贝 Instant Client - 容器内默认路径为
/opt/oracle/instantclient - 如需改为自定义库目录,可覆盖
ORA_CLIENT_LIB_DIR
DB_PATH
示例:
DB_PATH=/data/schemaforge.db
说明:
- 本地开发可使用相对路径,例如
./data/schemaforge.db - Docker Compose 容器内应使用绝对路径
/data/schemaforge.db - 宿主机目录建议挂载到
./data/app
管理员页面上传 CSV 导入普通用户。
当前建议格式:
id,password
abc123,abc123
20230001,123456规则:
- 只允许导入普通用户
id必须唯一,重复行报错- 已存在用户执行覆盖密码
- 不在 CSV 中的用户不会被删除