Repository navigation
feat(storage): 支持通过环境变量配置文件存储目录 - #228
Conversation
|
已根据 review 更新:开发环境默认 storage root 移到 config/dev.exs;test/prod 中 VMEMO_STORAGE_DIR 未设置或为空时默认使用 /data/storage;同步调整 entrypoint、文档和 storage 测试。 |
|
已根据新的 review feedback 简化 storage 配置:\n\n- dev/test 直接配置为 data/storage,不在配置文件里做 Path.expand\n- runtime.exs 移除全环境 default_storage_dir 分支,只在 prod 中读取 VMEMO_STORAGE_DIR\n- prod 中 VMEMO_STORAGE_DIR 未设置或为空时默认 /data/storage,非空时使用该值\n- 同步更新 .env.example、开发文档、spec 和 storage 测试\n\n本地已验证 dev/test 输出源码目录 data/storage,prod 空值输出 /data/storage,prod 自定义值可覆盖。 |
新增 VMEMO_STORAGE_DIR 配置,并同步当前 main 的上传、缩略图、X-Accel、导入导出、Docker、Zeabur 与文档路径。
bbcff7b to
7e16160
Compare
|
已按要求 rebase 到最新 origin/main,并完成 PR review。冲突解决时保留最新 main 的固定媒体路由、Zeabur 和 job 文案改动;review 中发现 rebase 带回了无用的 Nginx template/sed 替换逻辑,已移除。\n\n本地验证:format、warnings-as-errors 编译、focused tests(88 tests, 0 failures)、entrypoint shell 检查、Nginx 配置、root/e2e/local-machine compose config、dev/test/prod storage root eval 均通过。\n\n备注:mix check 在最新 main 上也因 priv/gettext/default.pot 过期失败,未将该 main 侧 gettext 变更混入本 storage PR。 |
|
已 push 最新 3 个提交:\n\n- fix(storage): 上传变体生成失败时返回错误\n- fix(test): 使用真实图片构造大文件上传用例\n- chore(gettext): 同步 gettext 文案模板\n\npush 前已验证 format、diff check、warnings-as-errors 编译、相关测试(37 tests, 0 failures)和 mix check,均通过。 |
背景
旧 PR #219 对应分支已经明显落后 main,已关闭。本 PR 基于最新 main 重新实现 storage dir 配置,并已 rebase 到当前
origin/main。当前默认值模型:dev/test 使用源码目录下的
data/storage,prod 使用VMEMO_STORAGE_DIR或/data/storage。变更
VMEMO_STORAGE_DIR生产环境运行时配置config/dev.exs和config/test.exs默认 storage root 为data/storageconfig/runtime.exs只在 prod 中读取VMEMO_STORAGE_DIR,未设置或为空时默认/data/storagePath.expand推导 storage root;路径规范化保留在Vmemo.Storage边界VMEMO_STORAGE_DIR=/data/storage,entrypoint 启动前确保VMEMO_STORAGE_DIR/v1存在/media/images/:id/:variant/storage/v1/...存储 URL,并将物理文件解析到配置的 storage root 下v1/...Rebase / Review
origin/main最新提交bec0777f验证
mise exec -- mix format --check-formattedgit diff --checkMIX_ENV=test mise exec -- mix compile --warnings-as-errors --no-listeners --ignore-module-conflictMIX_ENV=test mise exec -- mix test test/vmemo/memo/image_storage_test.exs test/vmemo_web/api/v1/image_controller_test.exs,37 tests, 0 failuresMIX_ENV=test mise exec -- mix check,退出码 0sh -n rel/entrypoint.shdocker run ... nginx -t验证 dev / prod Nginx 配置docker compose config验证根 compose、e2e compose、本机自托管 composemix eval验证 dev/test 默认输出仓库内data/storageMIX_ENV=prod VMEMO_STORAGE_DIR='' mix eval输出/data/storageMIX_ENV=prod VMEMO_STORAGE_DIR='/tmp/vmemo-prod-storage' mix eval输出自定义路径备注
mix check会输出项目既有 Sobelow / Credo 提示,但本次退出码为 0。