当前位置: 首页 > news >正文

使用 Docker 部署 Label Studio 时本地文件无法显示的排查与解决

目录

使用 Docker 部署 Label Studio 时本地文件无法显示的排查与解决

1. 背景

2. 问题现象

3. 排查步骤

3.1 确认文件是否存在

3.2 检查环境变量配置

4. 解决方案

方法一:修改 Sync Storage 路径(相对路径)

方法二:修改环境变量为 /

5. 最终解决

6. 总结

7. 建议


使用 Docker 部署 Label Studio 时本地文件无法显示的排查与解决

1. 背景

在生产环境中,我们常使用 Docker 部署 Label Studio 来进行数据标注。标注文件通常存储在一个挂载目录中,例如 /obs,并通过 同步存储(Sync Storage) 功能导入到项目中。

但在配置过程中遇到一个常见问题:图片无法显示,日志中报 404 错误


2. 问题现象

启动容器后访问项目页面,标注图片无法正常加载,日志出现以下报错:

[WARNING] Not Found: /data/local-files/
"GET /data/local-files/?d=obs/fish/%E5%9B%8A%E8%82%BF%E7%89%99%E9%B2%86%E9%B1%BC/img/1927190418391302144_20250527102953_1-1.jpg HTTP/1.1" 404 0

可以看到请求路径是:

/data/local-files/?d=obs/fish/囊肿牙鲆鱼/img/xxx.jpg

但返回了 404。


3. 排查步骤

3.1 确认文件是否存在

进入容器查看文件是否挂载成功:

docker exec -it label-studio bash
ls /obs/fish/囊肿牙鲆鱼/img/

文件存在,说明挂载没问题。

3.2 检查环境变量配置

启动脚本中配置了:

--env LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT=/obs

意味着 Label Studio 期望所有访问路径是相对于 /obs 的,例如:

/fish/囊肿牙鲆鱼/img/xxx.jpg

但实际 Sync Storage 路径是:

/obs/fish/囊肿牙鲆鱼/img/xxx.jpg

导致系统拼接后路径错误,变成:

/obs/obs/fish/囊肿牙鲆鱼/img/xxx.jpg

自然找不到文件。


4. 解决方案

方法一:修改 Sync Storage 路径(相对路径)

保持 LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT=/obs 不变,将路径改为相对路径:

/fish/囊肿牙鲆鱼/img/xxx.jpg

这样拼接后路径正确。

方法二:修改环境变量为 /

如果无法调整 Sync Storage 路径格式,可以直接让 Label Studio 以 / 作为本地文件根目录:

--env LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT=/

这样 d=obs/fish/... 会直接解析为 /obs/fish/...,无需改 Sync Storage 配置。


5. 最终解决

本案例中选择了方法二,即将环境变量改为 /

docker run -d \--name label-studio \-p 9002:8080 \-v /data1/apps/label-studio/data:/label-studio/data \-v /data1/apps/label-studio/files:/label-studio/files \-v /obs:/obs \--env LABEL_STUDIO_LOCAL_FILES_SERVING_ENABLED=true \--env LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT=/ \heartexlabs/label-studio:latest

修改后,图片路径 /obs/fish/... 可直接访问,标注页面图片正常显示。


6. 总结

问题原因:

  • LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT 定义了 Label Studio 允许访问的本地文件根目录;

  • d= 参数必须是该根目录下的相对路径;

  • 配置不一致会导致访问路径错误,返回 404。

解决方法:

  • 要么保持环境变量为 /obs,路径写相对路径;

  • 要么环境变量改为 /,路径保持原始 /obs/... 格式。


7. 建议

  • 生产环境中推荐明确设置 LOCAL_FILES_DOCUMENT_ROOT,避免随意改动文件路径结构;

  • 如果存在多个文件根目录,可统一挂载到 /label-studio/files 下,减少混乱;

  • 遇到 404 问题时,优先检查:

    1. 容器内文件是否存在;

    2. 环境变量与路径是否匹配;

    3. Sync Storage 配置是否多加或少加路径前缀。

http://www.lryc.cn/news/607373.html

相关文章:

  • 无人机自动跟随模块技术分析
  • Docker 实战 -- Nextcloud
  • 【05】VM二次开发——模块参数配置--带渲染/不带渲染(WinForm界面调用 模块参数配置)
  • Java 日期时间处理:分类、用途与性能分析
  • 前端学习日记(十七)
  • Ant 构建java项目
  • FastDDS (SharedMemory)
  • webpack面试题及详细答案80题(41-60)
  • C++ 前缀和、双指针
  • Node.js中Buffer的用法
  • 嵌入式第十七课!!!!位运算!!!
  • 考取锅炉司炉工证需要学习哪些专业知识?
  • Linux 用户与组管理:从配置文件到实操命令全解析
  • golang的函数
  • YOLO V11 + BotSort行人追踪定位项目
  • 风光储并离网切换仿真模型(下垂控制一次调频)
  • 详解K8s集群搭建:从环境准备到成功运行
  • 【问题思考总结】CART树如何剪枝?从CART树的生成到剪枝以及为什么CTt一定小于Ct?【图文】
  • 在多租户或多服务共享 Redis 时,如何做逻辑隔离或权限控制?
  • 【数据结构】-----排序的艺术画卷
  • ESD监控系统确保工厂生产设备的静电安全
  • 浏览器【详解】内置Observer(共五种,用于前端监控、图片懒加载、无限滚动、响应式布局、生成安全报告等)
  • cesium FBO(四)自定义相机渲染到Canvas(离屏渲染)
  • 开源工具FossFLOW,绘制技术图表
  • 嵌入式GPU图像渲染工具全景实用指南(i.MX8MP平台)
  • Python深度解析与爬虫进阶:从理论到企业级实践
  • ubuntu 镜像克隆
  • Git 实现原理剖析
  • 【编号394】阿姆河流域土地利用分布数据(1990-2015)
  • 智能问数系统的调研