运行AlphaFold Docker时提示run_alphafold.py不存在的问题
问题根源
修改后的run_docker.py里的_create_mount函数被硬编码为将所有相关目录都挂载成/data8/Alphafold_output_dir,这直接覆盖了本地AlphaFold源码目录到容器内的正确挂载映射,导致容器内找不到原本存在的run_alphafold.py。
修复步骤
修正
_create_mount函数的逻辑,针对不同类型的目录设置对应的挂载规则:- 源码目录:把本地
/home/administrator/alphafold挂载到容器内的源码路径(比如Dockerfile中指定的/app/alphafold) - 输出目录:挂载
/data8/Alphafold_output_dir到容器内的输出路径 - 数据库目录:挂载本地数据库路径到容器内对应的数据库目录
示例修正后的代码片段:
def _create_mount(source, target, type='bind', read_only=False): return { 'Source': source, 'Target': target, 'Type': type, 'ReadOnly': read_only, } # 构建挂载列表时区分不同目录 mounts = [] # 挂载源码目录 mounts.append(_create_mount('/home/administrator/alphafold', '/app/alphafold')) # 挂载输出目录 mounts.append(_create_mount('/data8/Alphafold_output_dir', '/app/output')) # 挂载数据库目录(根据实际本地路径调整) mounts.append(_create_mount('/path/to/local/databases', '/app/databases', read_only=True))- 源码目录:把本地
若修改了镜像相关配置,重新构建镜像:
docker build -t alphafold-custom .重新运行容器,确保命令中引用的容器内
run_alphafold.py路径与挂载后的路径一致:docker run --rm -v /home/administrator/alphafold:/app/alphafold -v /data8/Alphafold_output_dir:/app/output alphafold-custom python /app/alphafold/run_alphafold.py [你的其他运行参数]
验证要点
- 确认本地文件权限:确保
/home/administrator/alphafold/run_alphafold.py存在且Docker进程有读取权限 - 验证挂载有效性:启动临时容器检查挂载是否成功
如果能正常列出文件,说明挂载配置正确。docker run --rm -v /home/administrator/alphafold:/app/alphafold alphafold-custom ls /app/alphafold/run_alphafold.py
内容的提问来源于stack exchange,提问作者munized by cg
相关产品推荐
相关产品推荐

