如何配置Label Studio使用自定义根URL(Docker Compose部署)
解决Label Studio部署在非根URL路径(/labelstudio/)的配置方案
针对你遇到的「设置LABEL_STUDIO_BASE_URL后出现Heidi’s down错误和404」问题,结合Label Studio基于Django的特性,以及Docker Compose部署场景,按以下步骤调整配置:
1. 完善Docker Compose的环境变量配置
仅设置LABEL_STUDIO_BASE_URL不够,还需补充Django核心环境变量,确保路径规则统一:
修改你的docker-compose.yml中Label Studio服务的配置:
services: label-studio: image: heartexlabs/label-studio:latest environment: # 应用根路径(带末尾斜杠,匹配LB的路径前缀) - LABEL_STUDIO_BASE_URL=/labelstudio/ # Django强制脚本路径(不带末尾斜杠,控制Django路由前缀) - FORCE_SCRIPT_NAME=/labelstudio # 静态文件访问路径(对应前缀) - STATIC_URL=/labelstudio/static/ # 媒体文件访问路径(对应前缀) - MEDIA_URL=/labelstudio/media/ ports: - "8080:8080" volumes: - ./labelstudio-data:/label-studio/data
关键说明:
FORCE_SCRIPT_NAME是Django的核心变量,必须与LABEL_STUDIO_BASE_URL的前缀一致(去掉末尾斜杠),否则Django无法正确解析路由。STATIC_URL和MEDIA_URL确保前端静态资源、上传的媒体文件能通过正确路径访问,避免页面加载失败(这是Heidi’s down错误的常见原因)。
2. 调整AWS Load Balancer的路由规则
- 配置LB的转发规则:将路径前缀
/labelstudio/*的请求转发到Label Studio容器的8080端口。 - 不要设置路径重写:无需将
/labelstudio/前缀去掉后转发,Django会通过FORCE_SCRIPT_NAME自行处理路由匹配。 - 更新LB的健康检查路径:将健康检查URL改为
/labelstudio/health,而非默认的/,确保LB能正确识别服务状态。
3. 验证与排查
- 启动容器后,查看日志:确认没有静态文件收集失败、路由匹配错误的报错。
- 手动验证静态文件访问:访问
http://你的LB域名/labelstudio/static/css/main.css,能正常加载则说明静态路径配置正确。 - 清除浏览器缓存:之前访问根路径的缓存可能导致资源加载异常,清除后重新访问
/labelstudio/。
内容的提问来源于stack exchange,提问作者Thon Deboer
相关产品推荐
相关产品推荐

