Подключите 2 образа Docker для label-studio
Я использую Windows, я пытаюсь запустить label-studio на docker-img и включить автоматические аннотации с помощью модели машинного обучения tesseract, предоставленной из label-studio-ml-backend на другом docker-img. (В эти дни я открываю для себя докер...)
Настраивать:
На данный момент мне удалось запустить докер с помощью label-studio и докер с tesseract:
# Run the label-studio
docker run --name lbl-studio -it -p 8080:8080 -v label-studio-data:/label-studio/data/ heartexlabs/label-studio:latest label-studio
# DL and run tesseract image
git clone https://github.com/heartexlabs/label-studio-ml-backend
cd label-studio-ml-backend/label_studio_ml/examples/tesseract/
docker-compose up
На данный момент у меня есть 2 изображения, работающие в докере (или 3/4, я действительно не знаю, как интерпретировать изображение «тессеракта»)
Сеть:
Вот некоторую информацию о сети, которую я смог собрать, я не знаю, как это связано с тем фактом, что lbl-studio находится на 172.17, а две другие - на 172.18...
# Get ips of images
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' server # 172.18.0.3
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' redis # 172.18.0.2
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' lbl-studio # 172.17.0.2
# server: 172.18.0.3
# redis: 172.18.0.2
# lbl-studio: 172.17.0.2
пока Redis может пинговать сервер, но не может пинговать lbl-studio
Проблема:
Но когда я перехожу по адресу http://127.0.0.1:8080/ , создаю проект и пытаюсь связать мастер машинного обучения ( http://127.0.0.1:8080/projects/1/settings/ml > добавить модель ), я не могу подключить сервер tesseract к lbl-studio.
URL-адреса, которые я пытался подключить:
Идти дальше:
Я пробовал копать глубже и пинговать сервер из lbl-studio, но ничего не вышло
docker exec -it --user root lbl-studio /bin/bash
apt update
apt install iputils-ping
ping 127.18.0.3 # Nothing happening: 100% packet loss ;)
Вопрос:
Как подключить lbl-studio к серверу?
Спасибо за помощь :)
2 ответа
Добавьте в файл docker-compose tesseract в качестве третьего сервиса. Для подключения к сервисам с компьютера используйте и http://127.0.0.1:9090http://127.0.0.1:9090 . Для подключения междуtesseract
иlbl-studio
используйте имя сервисов: http://lbl-studio:8080 и http://server:9090. Пример:
version: "3.8"
services:
redis:
image: redis:alpine
container_name: redis
hostname: redis
volumes:
- "./data/redis:/data"
expose:
- 6379
server:
container_name: server
build: .
environment:
- MODEL_DIR=/data/models
- RQ_QUEUE_NAME=default
- REDIS_HOST=redis
- REDIS_PORT=6379
ports:
- 9090:9090
depends_on:
- redis
links:
- redis
volumes:
- "./data/server:/data"
- "./logs:/tmp"
lbl-studio:
image: heartexlabs/label-studio:latest
ports:
- 8080:8080
volumes:
- label-studio-data:/label-studio/data/
volumes:
label-studio-data:
Ответ @artem идеален: он добавляет машину lbl-studio в многоконтейнерную архитектуру tesseract, определенную в файле tesseract-docker-compose , и в конце добавляет общий том, потрясающе!
Другой способ добиться аналогичных результатов, который сохранит исходную структуру проекта, — это поместить штуку tesseract-multi-container в мостовую сеть, добавивnetwork_mode: bridge
на обеих машинах tesseract в файле docker-compose.yml:
version: "3.8"
services:
redis:
image: redis:alpine
container_name: redis
hostname: redis
volumes:
- "./data/redis:/data"
expose:
- 6379
network_mode: bridge # <-- here
server:
container_name: server
build: .
environment:
- MODEL_DIR=/data/models
- RQ_QUEUE_NAME=default
- REDIS_HOST=redis
- REDIS_PORT=6379
ports:
- 9090:9090
depends_on:
- redis
links:
- redis
volumes:
- "./data/server:/data"
- "./logs:/tmp"
network_mode: bridge # <-- and here
Спасибо за поддержку