Docker Compose gebruiken om meerdere containers te implementeren

In dit artikel wordt beschreven hoe u meerdere Azure AI-containers implementeert. U leert met name hoe u Docker Compose gebruikt om meerdere Docker-containerinstallatiekopieën te organiseren.

Docker Compose is een hulpprogramma voor het definiëren en uitvoeren van Docker-toepassingen met meerdere containers. In Opstellen gebruikt u een YAML-bestand om de services van uw toepassing te configureren. Vervolgens maakt en start u alle services vanuit uw configuratie door één opdracht uit te voeren.

Het kan handig zijn om meerdere containerinstallatiekopieën op één hostcomputer te organiseren. In dit artikel gaan we de containers Lezen en Document Intelligence samenbrengen.

Vereisten

Voor deze procedure zijn verschillende hulpprogramma's vereist die lokaal moeten worden geïnstalleerd en uitgevoerd:

  • Een Azure-abonnement. Als u nog geen abonnement hebt, maakt u een gratis account voordat u begint.
  • Docker-engine. Controleer of de Docker CLI werkt in een consolevenster.
  • Een Azure-resource met de juiste prijscategorie. Alleen de volgende prijscategorieën werken met deze container:
    • Azure AI Vision-resource met alleen de prijscategorie F0 of Standard.
    • Document Intelligence-resource met alleen de prijscategorie F0 of Standard.
    • Resource voor Azure AI-services met de prijscategorie S0.
  • Als u een beperkte preview-container gebruikt, moet u het online aanvraagformulier invullen om deze te gebruiken.

Docker Compose-bestand

Het YAML-bestand definieert alle services die moeten worden geïmplementeerd. Deze services zijn afhankelijk van een DockerFile of een bestaande containerinstallatiekopieën. In dit geval gebruiken we twee voorbeeldafbeeldingen. Kopieer en plak het volgende YAML-bestand en sla het op als docker-compose.yaml. Geef de juiste apikey-, facturerings- en EndpointUri-waarden op in het bestand.

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"

Belangrijk

Maak de mappen op de hostcomputer die zijn opgegeven onder het volumeknooppunt . Deze aanpak is vereist omdat de mappen moeten bestaan voordat u probeert een installatiekopie te koppelen met behulp van volumebindingen.

De geconfigureerde Docker Compose-services starten

Een Docker Compose-bestand maakt het beheer van alle fasen in de levenscyclus van een gedefinieerde service mogelijk: het starten, stoppen en opnieuw opbouwen van services; het weergeven van de servicestatus; en logboekstreaming. Open een opdrachtregelinterface vanuit de projectmap (waar het bestand docker-compose.yaml zich bevindt).

Notitie

Om fouten te voorkomen, moet u ervoor zorgen dat de hostcomputer stations correct deelt met Docker Engine. Als E:\publicpreview bijvoorbeeld wordt gebruikt als een map in het bestand docker-compose.yaml , deelt u station E met Docker.

Voer vanuit de opdrachtregelinterface de volgende opdracht uit om alle services te starten (of opnieuw te starten) die zijn gedefinieerd in het bestand docker-compose.yaml :

docker-compose up

De eerste keer dat Docker de opdracht docker-compose up uitvoert met behulp van deze configuratie, worden de installatiekopieën die zijn geconfigureerd onder het servicesknooppunt opgehaald en vervolgens gedownload en gekoppeld:

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

Nadat de installatiekopieën zijn gedownload, worden de installatiekopieën gestart:

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.

De beschikbaarheid van de service controleren

Tip

U kunt de opdracht docker-installatiekopieën gebruiken om de gedownloade containerinstallatiekopieën weer te geven. De volgende opdracht bevat bijvoorbeeld de id, opslagplaats en tag van elke gedownloade containerinstallatiekopieën, opgemaakt als een tabel:

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

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

Hier volgt een voorbeeld van uitvoer:

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

Containers testen

Open een browser op de hostcomputer en ga naar localhost met behulp van de opgegeven poort van het bestand docker-compose.yaml , zoals http://localhost:5021/swagger/index.html. U kunt bijvoorbeeld de functie Uitproberen in de API gebruiken om het eindpunt van Document Intelligence te testen. Beide swagger-pagina's van containers moeten beschikbaar en testbaar zijn.

Document Intelligence-container

Volgende stappen

Azure AI-containers