Windows环境下Docker部署Label Studio与Tesseract ML后端连接问题
问题:Docker中Label Studio无法连接Tesseract ML后端
环境与部署情况
- 系统:Windows
- 已成功启动Label Studio容器和Tesseract相关容器,启动命令如下:
# 启动Label Studio docker run --name lbl-studio -it -p 8080:8080 -v label-studio-data:/label-studio/data/ heartexlabs/label-studio:latest label-studio # 启动Tesseract ML后端 git clone https://github.com/heartexlabs/label-studio-ml-backend cd label-studio-ml-backend/label_studio_ml/examples/tesseract/ docker-compose up
网络信息
容器分属不同Docker网段,无法互通:
# 获取容器IP docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' server # 172.18.0.3(Tesseract后端服务) docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' redis # 172.18.0.2(Tesseract配套Redis) docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' lbl-studio # 172.17.0.2(Label Studio)
- Redis可ping通同网段的server,但无法跨网段ping通lbl-studio
- 从lbl-studio容器内ping server无响应(100%丢包)
当前问题
在Label Studio页面(http://127.0.0.1:8080/)创建项目后,添加机器学习模型时无法连接Tesseract服务器,尝试过的地址:
- http://127.0.0.1:9090/
- http://172.18.0.3:9090/
解决方案
方法1:将Label Studio加入Tesseract后端的Docker网络
- 查看Tesseract后端使用的网络名称:
docker network ls # 或通过容器信息确认:docker inspect server | grep -i network # 通常docker-compose创建的网络名为`label-studio-ml-backend_label-studio-ml`
- 停止并重新启动Label Studio,加入目标网络(替换
<tesseract-network-name>为实际网络名):
docker stop lbl-studio docker run --name lbl-studio -it -p 8080:8080 -v label-studio-data:/label-studio/data/ --network <tesseract-network-name> heartexlabs/label-studio:latest label-studio
- 在Label Studio中添加模型时,使用容器名访问:
http://server:9090/(同Docker网络内可直接通过容器名互通)
方法2:创建自定义Docker网络统一管理所有容器
- 创建自定义桥接网络:
docker network create label-studio-shared-net
- 停止现有容器:
docker stop lbl-studio server redis
- 重新启动Label Studio并加入自定义网络:
docker run --name lbl-studio -it -p 8080:8080 -v label-studio-data:/label-studio/data/ --network label-studio-shared-net heartexlabs/label-studio:latest label-studio
- 修改Tesseract后端的
docker-compose.yml,添加网络配置(与services同级):
networks: default: external: name: label-studio-shared-net
- 重新启动Tesseract后端:
cd label-studio-ml-backend/label_studio_ml/examples/tesseract/ docker-compose up -d
- 在Label Studio中使用
http://server:9090/作为模型地址
方法3:端口映射(临时测试场景)
- 修改Tesseract后端的
docker-compose.yml,为server服务添加端口映射:
services: server: # 其他配置不变 ports: - "9090:9090"
- 重新启动Tesseract后端:
docker-compose up -d
- 在Label Studio中使用宿主机映射地址:
http://host.docker.internal:9090/(Windows下Docker支持host.docker.internal访问宿主机)
内容的提问来源于stack exchange,提问作者Marc Moreaux
相关产品推荐
相关产品推荐

