Menggunakan emulator di Docker untuk Windows

BERLAKU UNTUK: SQL API Cassandra API Gremlin API Table API Azure Cosmos DB API for MongoDB

Anda dapat menjalankan Azure Cosmos DB Emulator pada kontainer Windows Docker. Lihat GitHub untuk Dockerfile dan informasi selengkapnya. Saat ini emulator tidak berfungsi di Docker untuk Oracle Linux. Gunakan petunjuk berikut buat menjalankan emulator di Docker untuk Windows:

  1. Setelah Anda memasang Docker untuk Windows, beralihlah ke kontainer Windows dengan mengeklik kanan ikon Docker pada toolbar dan pilih Beralih ke kontainer Windows.

  2. Selanjutnya, tarik gambar emulator dari Docker Hub dengan menjalankan perintah berikut dari shell favorit Anda.

    docker pull mcr.microsoft.com/cosmosdb/windows/azure-cosmos-emulator
    
  3. Untuk memulai gambar, jalankan perintah berikut bergantung pada baris perintah atau lingkungan 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
    

    Gambar Docker berbasis Windows mungkin tidak kompatibel secara umum dengan setiap OS host Windows. Misalnya, gambar Emulator Azure Cosmos DB default hanya kompatibel dengan Windows 10 dan Windows Server 2016. Jika Anda memerlukan gambar yang kompatibel dengan Windows Server 2019, jalankan perintah berikut ini sebagai gantinya:

    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
    

    Catatan

    Saat menjalankan perintah docker run, jika Anda melihat kesalahan konflik port (yaitu jika port yang ditentukan telah digunakan), lewati port kustom dengan mengubah nomor port. Misalnya, Anda dapat mengubah parameter "-p 8081:8081" menjadi "-p 443:8081"

  4. Sekarang gunakan titik akhir emulator dan kunci primer dari respons serta impor sertifikat TLS/SSL ke host Anda. Untuk mengimpor sertifikat TLS/SSL, jalankan langkah-langkah-langkah berikut dari wantian perintah admin:

    cd  %LOCALAPPDATA%\CosmosDBEmulator\bind-mount
    powershell .\importcert.ps1
    
  5. Jika Anda menutup shell interaktif setelah emulator dimulai, emulator akan mematikan kontainer emulator. Untuk membuka ulang penjelajah data, buka URL berikut di browser Anda. Titik akhir emulator disediakan dalam pesan respons seperti yang ditunjukkan di atas.

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

Jika Anda memiliki aplikasi klien .NET yang berjalan pada kontainer docker Linux dan jika Anda menjalankan Emulator Azure Cosmos DB pada mesin host, gunakan petunjuk di bagian berikutnya untuk mengimpor sertifikat ke kontainer docker Linux.

Meregenerasi sertifikat emulator

Saat menjalankan emulator di kontainer Docker, sertifikat yang terkait dengan emulator diregenerasi setiap kali Anda menghentikan dan memulai ulang masing-masing kontainer. Karena itu Anda harus mengimpor ulang sertifikat setelah masing-masing kontainer dimulai. Untuk mengatasi batasan ini, Anda dapat menggunakan file tulis Docker untuk mengikat kontainer Docker ke alamat IP tertentu dan gambar kontainer.

Misalnya, Anda dapat menggunakan konfigurasi berikut dalam file tulis Docker, pastikan untuk memformatnya sesuai kebutuhan Anda:

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'

Langkah berikutnya

Dalam artikel ini, Anda telah mempelajari cara menggunakan emulator lokal untuk pengembangan lokal gratis. Sekarang Anda dapat melanjutkan ke artikel berikutnya: