Use o emulador no Docker para windows

APLICA A: SQL API Cassandra API API API API Table API Azure Cosmos DB API para MongoDB

Pode executar o Emulador Azure Cosmos DB num recipiente Windows Docker. Consulte o GitHub para obter Dockerfile mais informações. Atualmente, o emulador não trabalha no Docker para a Oracle Linux. Utilize as seguintes instruções para executar o emulador no Docker para windows:

  1. Depois de ter o Docker para o Windows instalado, mude para os recipientes do Windows clicando corretamente no ícone Docker na barra de ferramentas e selecionando o Switch para os recipientes windows.

  2. Em seguida, extraia a imagem do emulador do Hub do Docker, executando o seguinte comando a partir da sua shell favorita.

    docker pull mcr.microsoft.com/cosmosdb/windows/azure-cosmos-emulator
    
  3. Para iniciar a imagem, executar os seguintes comandos dependendo da linha de comando ou do ambiente 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
    

    As imagens do Docker baseadas no Windows podem não ser geralmente compatíveis com todos os SISTEMAS do Windows. Por exemplo, a imagem padrão do Emulador Azure Cosmos DB é compatível apenas com Windows 10 e Windows Server 2016. Se precisar de uma imagem compatível com o Windows Server 2019, execute o seguinte comando:

    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
    

    Nota

    Ao executar o docker run comando, se vir um erro de conflito na porta (isto é, se a porta especificada já estiver em uso), passe uma porta personalizada alterando os números da porta. Por exemplo, pode alterar o parâmetro "-p 8081:8081" para "-p 443:8081"

  4. Agora use o ponto final do emulador e a chave primária da resposta e importe o certificado TLS/SSL para o seu anfitrião. Para importar o certificado TLS/SSL, executar os seguintes passos a partir de uma solicitação de comando administrativo:

    cd  %LOCALAPPDATA%\CosmosDBEmulator\bind-mount
    powershell .\importcert.ps1
    
  5. Se fechar a casca interativa depois do emulador ter começado, desligará o recipiente do emulador. Para reabrir o explorador de dados, navegue para o seguinte URL no seu navegador. O ponto final do emulador é fornecido na mensagem de resposta mostrada acima.

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

Se tiver uma aplicação de cliente .NET a funcionar num recipiente de estival Linux e se estiver a executar o Emulador Azure Cosmos DB numa máquina de anfitrião, utilize as instruções na secção seguinte para importar o certificado para o recipiente linux docker.

Regenerar os certificados de emulador

Ao executar o emulador num recipiente Docker, os certificados associados ao emulador são regenerados sempre que para e reinicia e reinicia o respetivo recipiente. Por isso, tem de re importar os certificados após o início de cada contentor. Para contornar esta limitação, pode utilizar um ficheiro de composição do Docker para ligar o contentor Docker a um determinado endereço IP e a uma imagem de contentor.

Por exemplo, pode utilizar a seguinte configuração dentro do ficheiro de composição do Docker, certifique-se de que o forma de acordo com o seu requisito:

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'

Passos seguintes

Neste artigo, aprendeu a usar o emulador local para o desenvolvimento local gratuito. Pode agora passar para os próximos artigos: