运行时候 docker 内的路径与权限问题解决方案

This commit is contained in:
2025-10-13 22:08:22 +08:00
parent 0b904cd69b
commit 675bce4b5a

View File

@@ -57,6 +57,47 @@ Nginx (Reverse Proxy)
- 环境变量示例: `backend/.env.example`
- 常用命令: `make help`
### macOS + Podman 使用注意事项
- Podman 在 macOS 上通过虚拟机运行,宿主目录绑定到容器时,写权限可能受限。
- 我们已在运行逻辑中对 macOS 进行特殊处理:将输入复制到容器内 `/tmp/input`,在 `/tmp` 执行 BtToxin_Digger结束后把 `Results/` 与关键输出复制回挂载的 `/workspace`(宿主输出目录)。
- 如仍遇写入问题:
- 在 Podman Desktop 的虚拟机共享目录中,添加项目路径并开启写权限。
- 如需,启用 rootful 模式并重启:`podman machine stop && podman machine set --rootful && podman machine start`
- 手动验证挂载:`podman run --rm -v $(pwd)/tests/output:/workspace:rw alpine sh -lc 'echo ok > /workspace/test.txt && ls -l /workspace'`
### 本地离线容器测试(可选)
使用 `scripts/test_bttoxin_digger.py` 最小测试:
```bash
uv run python scripts/test_bttoxin_digger.py
```
要求:`tests/test_data` 下存在 `97-27.fna``C15.fna`,测试成功后在 `tests/output/Results/Toxins` 看到 6 个关键文件。
### 单目录方案(跨平台稳定写入)
- 运行前,程序会将输入文件复制到宿主输出目录下的 `input_files/` 子目录;容器仅挂载该输出目录(读写)为 `/workspace`
- 工具运行时的 `--SeqPath` 指向 `/workspace/input_files`,工作目录也固定在 `/workspace`;所有结果与中间文件都会落在宿主的 `tests/output/` 下。
目录示例:
```
tests/output/
├── input_files/ # 输入文件副本
│ ├── 97-27.fna
│ └── C15.fna
├── Results/ # BtToxin_Digger 输出
│ └── Toxins/
│ ├── 97-27.list
│ ├── 97-27.gbk
│ └── ...
├── StatsFiles/ # 统计文件(如有)
├── All_Toxins.txt
└── BtToxin_Digger.log
```
## License
MIT License