De emulator gebruiken in Docker voor Windows

VAN TOEPASSING OP: Nosql MongoDB Cassandra Gremlin Tabel

U kunt de Azure Cosmos DB Emulator uitvoeren op een Windows Docker-container. Zie GitHub voor de Dockerfile en meer informatie. Op dit moment werkt de emulator niet in Docker voor Oracle Linux. Gebruik de volgende instructies om de emulator uit te voeren in Docker voor Windows:

  1. Nadat u Docker voor Windows hebt geïnstalleerd, schakelt u over naar Windows-containers door met de rechtermuisknop op het Docker-pictogram op de werkbalk te klikken en Overschakelen naar Windows-containers te selecteren.

  2. Haal vervolgens de installatiekopie van de emulator op van Docker Hub met de volgende opdracht in uw favoriete shell.

    docker pull mcr.microsoft.com/cosmosdb/windows/azure-cosmos-emulator
    
  3. Als u de installatiekopie wilt starten, voert u de volgende opdrachten uit, afhankelijk van de opdrachtregel of de PowerShell-omgeving:

    
    md %LOCALAPPDATA%\CosmosDBEmulator\bind-mount
    
    docker run --name azure-cosmosdb-emulator --memory 2GB --mount "type=bind,source=%LOCALAPPDATA%\CosmosDBEmulator\bind-mount,destination=C:\CosmosDB.Emulator\bind-mount" --interactive --tty -p 8081:8081 -p 8900:8900 -p 8901:8901 -p 8902:8902 -p 10250:10250 -p 10251:10251 -p 10252:10252 -p 10253:10253 -p 10254:10254 -p 10255:10255 -p 10256:10256 -p 10350:10350 mcr.microsoft.com/cosmosdb/windows/azure-cosmos-emulator
    

    Docker-installatiekopieën op basis van Windows zijn mogelijk niet over het algemeen compatibel met elk Windows-host-besturingssysteem. De standaardinstallatiekopieën van Azure Cosmos DB Emulator zijn bijvoorbeeld alleen compatibel met Windows 10 en Windows Server 2016. Als u een installatiekopieën nodig hebt die compatibel is met Windows Server 2019, voert u in plaats daarvan de volgende opdracht uit:

    docker run --name azure-cosmosdb-emulator --memory 2GB --mount "type=bind,source=%hostDirectory%,destination=C:\CosmosDB.Emulator\bind-mount" --interactive --tty -p 8081:8081 -p 8900:8900 -p 8901:8901 -p 8902:8902 -p 10250:10250 -p 10251:10251 -p 10252:10252 -p 10253:10253 -p 10254:10254 -p 10255:10255 -p 10256:10256 -p 10350:10350 mcr.microsoft.com/cosmosdb/winsrv2019/azure-cosmos-emulator:latest
    

    Notitie

    Als u bij het uitvoeren van de docker run opdracht een poortconflictfout ziet (dat wil doen als de opgegeven poort al in gebruik is), geeft u een aangepaste poort door door de poortnummers te wijzigen. U kunt bijvoorbeeld de parameter '-p 8081:8081' wijzigen in '-p 443:8081'

  4. Gebruik nu het emulatoreindpunt en de primaire sleutel uit het antwoord en importeer het TLS/SSL-certificaat in uw host. Voer de volgende stappen uit vanaf een beheerdersopdrachtprompt om het TLS/SSL-certificaat te importeren:

    cd  %LOCALAPPDATA%\CosmosDBEmulator\bind-mount
    powershell .\importcert.ps1
    
  5. Als u de interactieve shell sluit nadat de emulator is gestart, wordt de container van de emulator afgesloten. Als u data explorer opnieuw wilt openen, gaat u naar de volgende URL in uw browser. Het eindpunt van de emulator wordt vermeld in het reactiebericht dat hierboven wordt getoond.

    https://<emulator endpoint provided in response>/_explorer/index.html

Als u een .NET-clienttoepassing hebt die wordt uitgevoerd op een Linux Docker-container en als u Azure Cosmos DB Emulator uitvoert op een hostcomputer, gebruikt u de instructies in de volgende sectie om het certificaat te importeren in de Linux-docker-container.

De emulatorcertificaten opnieuw genereren

Wanneer u de emulator uitvoert in een Docker-container, worden de certificaten die zijn gekoppeld aan de emulator opnieuw gegenereerd telkens wanneer u de betreffende container stopt en opnieuw start. Daarom moet u de certificaten na het starten van elke container opnieuw importeren. U kunt deze beperking omzeilen door een Docker-opstellenbestand te gebruiken om de Docker-container te binden aan een bepaald IP-adres en een containerinstallatiekopie.

U kunt bijvoorbeeld de volgende configuratie gebruiken in het Docker-opstellenbestand. Zorg ervoor dat u het opmaken op basis van uw behoeften:

version: '2.4' # Do not upgrade to 3.x yet, unless you plan to use swarm/docker stack: https://github.com/docker/compose/issues/4513

networks:
  default:
    external: false
    ipam:
      driver: default
      config:
        - subnet: "172.16.238.0/24"

services:

  # First create a directory that will hold the emulator traces and certificate to be imported
  # set hostDirectory=C:\emulator\bind-mount
  # mkdir %hostDirectory%

  cosmosdb:
    container_name: "azurecosmosemulator"
    hostname: "azurecosmosemulator"
    image: 'mcr.microsoft.com/cosmosdb/windows/azure-cosmos-emulator'
    platform: windows
    tty: true
    mem_limit: 3GB
    ports:
        - '8081:8081'
        - '8900:8900'
        - '8901:8901'
        - '8902:8902'
        - '10250:10250'
        - '10251:10251'
        - '10252:10252'
        - '10253:10253'
        - '10254:10254'
        - '10255:10255'
        - '10256:10256'
        - '10350:10350'
    networks:
      default:
        ipv4_address: 172.16.238.246
    volumes:
        - '${hostDirectory}:C:\CosmosDB.Emulator\bind-mount'

Volgende stappen

In dit artikel hebt u geleerd hoe u de lokale emulator kunt gebruiken voor gratis lokale ontwikkeling. U kunt nu doorgaan met de volgende artikelen: