Używanie emulatora na platformie Docker na Windows

DOTYCZY: Interfejs API SQL interfejs API Cassandra Interfejs API języka Gremlin interfejs API tabel Azure Cosmos DB API dla bazy danych MongoDB

Możesz uruchomić usługę Azure Cosmos DB Emulator w kontenerze Windows Docker. Zobacz GitHub, aby uzyskać Dockerfile więcej informacji. Obecnie emulator nie działa na platformie Docker dla Oracle Linux. Aby uruchomić emulator na platformie Docker for Windows, wykonaj następujące Windows:

  1. Po zainstalowaniu platformy Docker for Windows przełącz się do kontenerów programu Windows, klikając prawym przyciskiem myszy ikonę platformy Docker na pasku narzędzi i wybierając polecenie Przełącz do Windows kontenerów.

  2. Następnie ściągnij obraz emulatora z usługi Docker Hub, uruchamiając następujące polecenie w wybranej powłoce.

    docker pull mcr.microsoft.com/cosmosdb/windows/azure-cosmos-emulator
    
  3. Aby uruchomić obraz, uruchom następujące polecenia w zależności od wiersza polecenia lub środowiska programu PowerShell:

    
    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
    

    Windows do platformy Docker mogą nie być ogólnie zgodne z każdym Windows systemu operacyjnego hosta. Na przykład domyślny obraz usługi Azure Cosmos DB Emulator jest zgodny tylko z Windows 10 i Windows Server 2016. Jeśli potrzebujesz obrazu zgodnego z programem Windows Server 2019, zamiast tego uruchom następujące polecenie:

    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
    

    Uwaga

    Jeśli podczas wykonywania polecenia zostanie wyświetlony błąd konfliktu portów (jeśli określony port jest już w użyciu), przekaż port niestandardowy, zmieniając docker run numery portów. Na przykład można zmienić parametr "-p 8081:8081" na "-p 443:8081"

  4. Teraz użyj punktu końcowego emulatora i klucza podstawowego z odpowiedzi i zaimportuj certyfikat TLS/SSL do hosta. Aby zaimportować certyfikat TLS/SSL, uruchom następujące kroki w wierszu polecenia administratora:

    cd  %LOCALAPPDATA%\CosmosDBEmulator\bind-mount
    powershell .\importcert.ps1
    
  5. Jeśli zamkniesz interaktywną powłokę po zakończeniu pracy emulatora, spowoduje to zamknięcie kontenera emulatora. Aby ponownie otworzyć Eksploratora danych, przejdź do następującego adresu URL w przeglądarce. Punkt końcowy emulatora znajduje się w powyższym komunikacie odpowiedzi.

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

Jeśli masz aplikację kliency .NET uruchamianą w kontenerze platformy Docker systemu Linux i jeśli korzystasz z usługi Azure Cosmos DB Emulator na maszynie hosta, użyj instrukcji w następnej sekcji, aby zaimportować certyfikat do kontenera platformy Docker systemu Linux.

Ponowne generowanie certyfikatów emulatora

Podczas uruchamiania emulatora w kontenerze platformy Docker certyfikaty skojarzone z emulatorem są ponownie generowany za każdym razem, gdy zatrzymujesz i uruchamiasz ponownie odpowiedni kontener. Z tego powodu należy ponownie zaimportować certyfikaty po każdym uruchomieniu kontenera. Aby obewiązać to ograniczenie, możesz użyć pliku docker compose, aby powiązać kontener platformy Docker z określonym adresem IP i obrazem kontenera.

Na przykład możesz użyć następującej konfiguracji w pliku Docker Compose i sformatuj go zgodnie z wymaganiami:

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'

Następne kroki

W tym artykule opisano sposób korzystania z lokalnego emulatora w celu bezpłatnego tworzenia aplikacji lokalnych. Teraz możesz przejść do następnych artykułów: