Utilizar o Docker Compose para implementar vários contentores

Este artigo mostra-lhe como implementar vários contentores de IA do Azure. Mais concretamente, irá aprender a utilizar o Docker Compose para orquestrar várias imagens de contentor do Docker.

O Docker Compose é uma ferramenta para definir e executar aplicações Docker com vários contentores. Em Compor, utilize um ficheiro YAML para configurar os serviços da sua aplicação. Em seguida, crie e inicie todos os serviços a partir da sua configuração ao executar um único comando.

Pode ser útil orquestrar várias imagens de contentor num único computador anfitrião. Neste artigo, vamos reunir os contentores de Leitura e Inteligência de Documentos.

Pré-requisitos

Este procedimento requer várias ferramentas que têm de ser instaladas e executadas localmente:

  • Uma subscrição do Azure. Se não tiver uma, crie uma conta gratuita antes de começar.
  • Motor do Docker. Confirme que a CLI do Docker funciona numa janela da consola.
  • Um recurso do Azure com o escalão de preço correto. Apenas os seguintes escalões de preço funcionam com este contentor:
    • Recurso da Visão de IA do Azure apenas com escalão de preço F0 ou Standard.
    • Recurso do Document Intelligence apenas com escalão de preço F0 ou Standard.
    • Recurso dos serviços de IA do Azure com o escalão de preço S0.
  • Se estiver a utilizar um contentor de pré-visualização fechado, terá de preencher o formulário de pedido online para o utilizar.

Ficheiro Docker Compose

O ficheiro YAML define todos os serviços a implementar. Estes serviços dependem de uma ou de uma DockerFile imagem de contentor existente. Neste caso, vamos utilizar duas imagens de pré-visualização. Copie e cole o seguinte ficheiro YAML e guarde-o como docker-compose.yaml. Forneça os valores apikey, faturação e EndpointUri adequados no ficheiro.

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 anfitrião especificados no nó de volumes . Esta abordagem é necessária porque os diretórios têm de existir antes de tentar montar uma imagem através de enlaces de volume.

Iniciar os serviços configurados do Docker Compose

Um ficheiro Docker Compose permite a gestão de todas as fases do ciclo de vida de um serviço definido: iniciar, parar e reconstruir serviços; ver o estado do serviço; e a transmissão em fluxo de registos. Abra uma interface de linha de comandos a partir do diretório do projeto (onde está localizado o ficheiro docker-compose.yaml).

Nota

Para evitar erros, certifique-se de que o computador anfitrião partilha corretamente unidades com o Motor do Docker. Por exemplo, se E:\publicpreview for utilizado como um diretório no ficheiro docker-compose.yaml , partilhe a unidade E com o Docker.

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

docker-compose up

A primeira vez que o Docker executa o comando docker-compose up com esta configuração, extrai as imagens configuradas no nó de serviços e, em seguida, transfere e monta-as:

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 de as imagens serem transferidas, 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

Pode utilizar o comando docker images para listar as imagens de contentor transferidas. Por exemplo, o comando seguinte lista o ID, o repositório e a etiqueta de cada imagem de contentor transferida, formatada como uma tabela:

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

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

Eis alguns exemplos 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 contentores

Abra um browser no computador anfitrião e aceda a localhost com a porta especificada do ficheiro docker-compose.yaml , como http://localhost:5021/swagger/index.html. Por exemplo, pode utilizar a funcionalidade Experimentar na API para testar o ponto final do Document Intelligence. Ambas as páginas swagger de contentores devem estar disponíveis e testáveis.

Contentor do Document Intelligence

Passos seguintes

Contentores de IA do Azure