Развертывание нескольких контейнеров с помощью Docker Compose
В этой статье показано, как развернуть несколько контейнеров ИИ Azure. В частности, вы узнаете, как использовать Docker Compose для оркестрации нескольких образов контейнеров Docker.
Docker Compose — это средство для определения и запуска приложений Docker с несколькими контейнерами. При работе в Compose вы используете файл YAML для настройки служб приложения. Затем вы создаете и запускаете все службы из конфигурации путем выполнения одной команды.
Иногда полезно выполнять оркестрацию нескольких образов контейнеров на одном главном компьютере. В этой статье мы объединим контейнеры аналитики чтения и документов.
Необходимые компоненты
Для выполнения этой процедуры необходимо установить и запустить в локальной среде несколько средств.
- Подписка Azure. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись, прежде чем начать работу.
- Подсистема Docker. Проверьте работоспособность Docker CLI в окне консоли.
- Ресурс Azure с правильной ценовой категорией. С этим контейнером работают только следующие ценовые категории:
- Ресурс Azure AI Vision только с ценовой категорией F0 или Standard.
- Ресурс аналитики документов только с ценовой категорией F0 или Standard.
- Ресурс служб искусственного интеллекта Azure с ценовой категорией S0.
- Если вы используете предварительную версию контейнера (необходим допуск), вам потребуется заполнить онлайн-форму запроса, чтобы ее использовать.
Файл Docker Compose
Файл YAML определяет все службы, которые необходимо развернуть. Эти службы зависят либо от DockerFile
, либо от существующего образа контейнера. В данном случае мы будем использовать два образа предварительной версии. Скопируйте и вставьте следующий файл YAML, а затем сохраните его как docker-compose.yaml. Задайте в файле надлежащие значения apikey, billing и EndpointUri.
version: '3.7'
services:
forms:
image: "mcr.microsoft.com/azure-cognitive-services/form-recognizer/layout"
environment:
eula: accept
billing: # < Your Document Intelligence billing URL >
apikey: # < Your Document Intelligence API key >
FormRecognizer__ComputerVisionApiKey: # < Your Document Intelligence API key >
FormRecognizer__ComputerVisionEndpointUri: # < Your Document Intelligence URI >
volumes:
- type: bind
source: E:\publicpreview\output
target: /output
- type: bind
source: E:\publicpreview\input
target: /input
ports:
- "5010:5000"
ocr:
image: "mcr.microsoft.com/azure-cognitive-services/vision/read:3.1-preview"
environment:
eula: accept
apikey: # < Your Azure AI Vision API key >
billing: # < Your Azure AI Vision billing URL >
ports:
- "5021:5000"
Внимание
Создайте на главном компьютере каталоги, указанные в узле тома. Этот подход необходим, поскольку каталоги должны существовать до попытки подключения образа с помощью привязок томов.
Запуск настроенных служб Docker Compose
Файл Docker Compose обеспечивает управление всеми этапами в жизненном цикле определенной службы: запуском, остановкой и перестроением служб; просмотром состояния службы; и потоковой передачей журналов. Откройте интерфейс командной строки из каталога проекта (где находится файл docker-compose.yaml).
Примечание.
Во избежание ошибок убедитесь, что главный компьютер правильно предоставляет подсистеме Docker общий доступ к дискам. Например, если E:\publicpreview используется в качестве каталога в файле docker-compose.yaml, предоставьте Docker общий доступ к диску E.
В интерфейсе командной строки выполните следующую команду, чтобы запустить (или перезапустить) все службы, определенные в файле docker-compose.yaml:
docker-compose up
При первом выполнении команды docker-compose up с помощью этой конфигурации Docker извлекает образы, настроенные в узле служб, а затем загружает и подключает их:
Pulling forms (mcr.microsoft.com/azure-cognitive-services/form-recognizer/layout:)...
latest: Pulling from azure-cognitive-services/form-recognizer/layout
743f2d6c1f65: Pull complete
72befba99561: Pull complete
2a40b9192d02: Pull complete
c7715c9d5c33: Pull complete
f0b33959f1c4: Pull complete
b8ab86c6ab26: Pull complete
41940c21ed3c: Pull complete
e3d37dd258d4: Pull complete
cdb5eb761109: Pull complete
fd93b5f95865: Pull complete
ef41dcbc5857: Pull complete
4d05c86a4178: Pull complete
34e811d37201: Pull complete
Pulling ocr (mcr.microsoft.com/azure-cognitive-services/vision/read:3.1-preview:)...
latest: Pulling from /azure-cognitive-services/vision/read:3.1-preview
f476d66f5408: Already exists
8882c27f669e: Already exists
d9af21273955: Already exists
f5029279ec12: Already exists
1a578849dcd1: Pull complete
45064b1ab0bf: Download complete
4bb846705268: Downloading [=========================================> ] 187.1MB/222.8MB
c56511552241: Waiting
e91d2aa0f1ad: Downloading [==============================================> ] 162.2MB/176.1MB
После скачивания образов запускаются службы образов:
Starting docker_ocr_1 ... done
Starting docker_forms_1 ... doneAttaching to docker_ocr_1, docker_forms_1forms_1 | forms_1 | forms_1 | Notice: This Preview is made available to you on the condition that you agree to the Supplemental Terms of Use for Microsoft Azure Previews [https://go.microsoft.com/fwlink/?linkid=2018815], which supplement your agreement [https://go.microsoft.com/fwlink/?linkid=2018657] governing your use of Azure. If you do not have an existing agreement governing your use of Azure, you agree that your agreement governing use of Azure is the Microsoft Online Subscription Agreement [https://go.microsoft.com/fwlink/?linkid=2018755] (which incorporates the Online Services Terms [https://go.microsoft.com/fwlink/?linkid=2018760]). By using the Preview you agree to these terms.
forms_1 |
forms_1 |
forms_1 | Using '/input' for reading models and other read-only data.
forms_1 | Using '/output/forms/812d811d1bcc' for writing logs and other output data.
forms_1 | Logging to console.
forms_1 | Submitting metering to 'https://westus2.api.cognitive.microsoft.com/'.
forms_1 | WARNING: No access control enabled!
forms_1 | warn: Microsoft.AspNetCore.Server.Kestrel[0]
forms_1 | Overriding address(es) 'http://+:80'. Binding to endpoints defined in UseKestrel() instead.
forms_1 | Hosting environment: Production
forms_1 | Content root path: /app/forms
forms_1 | Now listening on: http://0.0.0.0:5000
forms_1 | Application started. Press Ctrl+C to shut down.
ocr_1 |
ocr_1 |
ocr_1 | Notice: This Preview is made available to you on the condition that you agree to the Supplemental Terms of Use for Microsoft Azure Previews [https://go.microsoft.com/fwlink/?linkid=2018815], which supplement your agreement [https://go.microsoft.com/fwlink/?linkid=2018657] governing your use of Azure. If you do not have an existing agreement governing your use of Azure, you agree that your agreement governing use of Azure is the Microsoft Online Subscription Agreement [https://go.microsoft.com/fwlink/?linkid=2018755] (which incorporates the Online Services Terms [https://go.microsoft.com/fwlink/?linkid=2018760]). By using the Preview you agree to these terms.
ocr_1 |
ocr_1 |
ocr_1 | Logging to console.
ocr_1 | Submitting metering to 'https://westcentralus.api.cognitive.microsoft.com/'.
ocr_1 | WARNING: No access control enabled!
ocr_1 | Hosting environment: Production
ocr_1 | Content root path: /
ocr_1 | Now listening on: http://0.0.0.0:5000
ocr_1 | Application started. Press Ctrl+C to shut down.
Проверка доступности службы
Совет
Используйте команду docker images, чтобы получить список скачанных образов контейнеров. Например, следующая команда возвращает таблицу со списком идентификаторов, репозиториев и тегов для каждого скачанного образа контейнера:
docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"
IMAGE ID REPOSITORY TAG
<image-id> <repository-path/name> <tag-name>
Вот пример выходных данных этой команды:
IMAGE ID REPOSITORY TAG
2ce533f88e80 mcr.microsoft.com/azure-cognitive-services/form-recognizer/layout latest
4be104c126c5 mcr.microsoft.com/azure-cognitive-services/vision/read:3.1-preview latest
Контейнеры тестов
Откройте браузер на главном компьютере и перейдите на узел localhost, используя указанный порт из файла docker-compose.yaml, например http://localhost:5021/swagger/index.html. Например, можно использовать функцию Try It в API для тестирования конечной точки аналитики документов. Страницы Swagger обоих контейнеров должны быть доступны и подлежать тестированию.