Usar o Docker Compose para implantar vários contêineres

Este artigo mostra como implantar vários contêineres da IA do Azure. Especificamente, você aprenderá a usar o Docker Compose para orquestrar várias imagens de contêiner do Docker.

O Docker Compose é uma ferramenta usada para definir e executar aplicativos de vários contêineres do Docker. No Compose, um arquivo YAML é usado para configurar os serviços do aplicativo. Em seguida, você cria e inicia todos os serviços com base na sua configuração executando um só comando.

Pode ser útil orquestrar várias imagens de contêiner em um só computador host. Neste artigo, vamos reunir os contêineres de Leitura e Inteligência de Documento.

Pré-requisitos

Este procedimento exige várias ferramentas que precisam ser instaladas e executadas localmente:

  • Uma assinatura do Azure. Se você não tiver uma, crie uma conta gratuita antes de começar.
  • Mecanismo do Docker. Confirme se a CLI do Docker funciona em uma janela do console.
  • Um recurso do Azure com o tipo de preço correto. Somente os seguintes tipos de preço funcionam com esse contêiner:
    • Recurso de Visão de IA do Azure somente com o tipo de preço F0 ou Standard.
    • Recurso de Inteligência de Documentos somente com o tipo de preço F0 ou Standard.
    • O recurso Serviços de IA do Azure com o a camada de preço S0.
  • Se você estiver usando um contêiner de versão prévia restrito, precisará preencher o formulário de solicitação online para usá-lo.

Arquivo do Docker Compose

O arquivo YAML define todos os serviços a serem implantados. Esses serviços dependem de um DockerFile ou de uma imagem de contêiner existente. Nesse caso, usaremos duas imagens de versão prévia. Copie e cole o seguinte arquivo YAML e salve-o como docker-compose.yaml. Forneça os valores apropriados para apikey, billing e EndpointUri no arquivo.

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"

Importante

Crie os diretórios no computador host que são especificados no nó volumes. Essa abordagem é necessária porque os diretórios precisam existir antes de você tentar montar uma imagem usando associações de volume.

Iniciar os serviços configurados do Docker Compose

Um arquivo do Docker Compose permite o gerenciamento de todas as fases de um ciclo de vida de um serviço definido: início, interrupção e recompilação de serviços, exibição do status do serviço e streaming de log. Abra uma interface de linha de comando no diretório do projeto (no qual se encontra o arquivo docker-compose.yaml).

Observação

Para evitar erros, verifique se o computador host compartilha corretamente as unidades com o Mecanismo do Docker. Por exemplo, se E:\publicpreview for usado como um diretório no arquivo docker-compose.yaml, compartilhe a unidade E com o Docker.

Na interface de linha de comando, execute o seguinte comando para iniciar (ou reiniciar) todos os serviços definidos no arquivo docker-compose.yaml:

docker-compose up

Na primeira vez que o Docker executa o comando docker-compose up usando essa configuração, ele efetua pull das imagens configuradas no nó serviços para baixá-las e montá-las:

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

Depois que as imagens são baixadas, os serviços de imagem são iniciados:

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.

Verificar a disponibilidade do serviço

Dica

Você pode usar o comando imagens do estivador para listar as imagens do contêiner transferidas por download. Por exemplo, o comando a seguir lista o ID, o repositório e a tag de cada imagem do contêiner transferida por download, formatada como uma tabela:

docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"

IMAGE ID         REPOSITORY                TAG
<image-id>       <repository-path/name>    <tag-name>

Veja a seguir um exemplo de saída:

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

Testar contêineres

Abra um navegador no computador host e acesse o localhost usando a porta especificada do arquivo docker-compose.yaml, como http://localhost:5021/swagger/index.html. Por exemplo, você pode usar o recurso Experimentar na API para testar o ponto de extremidade da Inteligência de Documentos. As páginas do Swagger dos dois contêineres devem estar disponíveis e serem passíveis de teste.

Contêiner da Informação de Documentos

Próximas etapas

Contêineres da IA do Azure