Usare Docker Compose per distribuire più contenitori

Questo articolo illustra come distribuire più contenitori di Intelligenza artificiale di Azure. In particolare, si apprenderà come usare Docker Compose per orchestrare più immagini contenitore Docker.

Docker Compose è uno strumento per definire ed eseguire applicazioni Docker multi-contenitore. In Compose si usa un file YAML per configurare i servizi dell'applicazione. Quindi, si creano e si avviano tutti i servizi dalla configurazione eseguendo un singolo comando.

Può essere utile orchestrare più immagini del contenitore in un singolo computer host. In questo articolo verrà eseguito il pull insieme dei contenitori Read and Document Intelligence.

Prerequisiti

Questa procedura richiede diversi strumenti che devono essere installati ed eseguiti in locale:

  • Una sottoscrizione di Azure. Se non se ne ha una, creare un account gratuito prima di iniziare.
  • Motore Docker. Verificare che l'interfaccia della riga di comando di Docker funzioni in una finestra della console.
  • Una risorsa di Azure con il piano tariffario corretto. Solo i piani tariffari seguenti funzionano con questo contenitore:
    • Risorsa Visione di intelligenza artificiale di Azure con solo piano tariffario F0 o Standard.
    • Risorsa di Document Intelligence con solo piano tariffario F0 o Standard.
    • Risorsa dei servizi di intelligenza artificiale di Azure con il piano tariffario S0.
  • Se si usa un contenitore di anteprima gated, è necessario completare il modulo di richiesta online per usarlo.

File Docker Compose

Il file YAML definisce tutti i servizi da distribuire. Questi servizi si basano su un'immagine DockerFile del contenitore esistente o su un'immagine del contenitore esistente. In questo caso verranno usate due immagini di anteprima. Copiare e incollare il file YAML seguente e salvarlo come docker-compose.yaml. Specificare i valori apikey, fatturazione e EndpointUri appropriati nel file.

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

Creare le directory nel computer host specificato nel nodo volumi . Questo approccio è necessario perché le directory devono esistere prima di provare a montare un'immagine usando associazioni di volumi.

Avviare i servizi Docker Compose configurati

Un file Docker Compose consente la gestione di tutte le fasi del ciclo di vita di un servizio definito: avvio, arresto e ricompilazione dei servizi; visualizzazione dello stato del servizio; e log streaming. Aprire un'interfaccia della riga di comando dalla directory del progetto (in cui si trova il file docker-compose.yaml).

Nota

Per evitare errori, assicurarsi che il computer host condivide correttamente le unità con Docker Engine. Ad esempio, se E:\publicpreview viene usato come directory nel file docker-compose.yaml , condividere l'unità E con Docker.

Dall'interfaccia della riga di comando eseguire il comando seguente per avviare (o riavviare) tutti i servizi definiti nel file docker-compose.yaml :

docker-compose up

La prima volta che Docker esegue il comando docker-compose up usando questa configurazione, esegue il pull delle immagini configurate nel nodo dei servizi e quindi li scarica e li monta:

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

Dopo aver scaricato le immagini, i servizi di immagine vengono avviati:

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.

Verificare la disponibilità del servizio

Suggerimento

È possibile usare il comando docker images per visualizzare l'elenco delle immagini dei contenitori scaricate. Ad esempio, il comando seguente visualizza l'ID, il repository e il tag di ogni immagine del contenitore scaricata, in formato tabella:

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

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

Ecco un esempio di output:

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

Testare i contenitori

Aprire un browser nel computer host e passare a localhost usando la porta specificata dal file docker-compose.yaml , ad esempio http://localhost:5021/swagger/index.html. Ad esempio, è possibile usare la funzionalità Prova nell'API per testare l'endpoint di Document Intelligence. Entrambe le pagine swagger dei contenitori devono essere disponibili e testabili.

Contenitore di Intelligence dei documenti

Passaggi successivi

Contenitori di Intelligenza artificiale di Azure