استخدم المحاكي على Docker لنظام التشغيل Windows

ينطبق على: واجهة برمجة تطبيقاتSQL وواجهة برمجة تطبيقات Cassandra وواجهة برمجة تطبيقات Gremlin وواجهة برمجة تطبيقات Table وواجهة برمجة تطبيقات Azure Cosmos DB API for MongoDB

يمكنك تشغيل محاكي Azure Cosmos DB في حاوية Windows Docker. راجع GitHub للحصول على Dockerfile ولمزيد من المعلومات. حاليًا، لا يعمل المحاكي على Docker لـ Oracle Linux. استخدم الإرشادات التالية لتشغيل المحاكي على Docker لـ Windows:

  1. بعد تثبيت Docker لنظام التشغيل Windows، انتقل إلى حاويات Windows بالنقر بزر الماوس الأيمن فوق رمز Docker على شريط الأدوات وتحديد التبديل إلى حاويات Windows .

  2. بعد ذلك، اسحب صورة المحاكي من Docker Hub عن طريق تشغيل الأمر التالي من غلافك المفضل.

    docker pull mcr.microsoft.com/cosmosdb/windows/azure-cosmos-emulator
    
  3. لبدء الصورة، قم بتشغيل الأوامر التالية بناءً على سطر الأوامر أو بيئة 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
    

    قد لا تكون صور Docker المستندة إلى Windows متوافقة بشكل عام مع كل نظام تشغيل مضيف لـ Windows. على سبيل المثال، صورة محاكي Azure Cosmos DB الافتراضية متوافقة فقط مع Windows 10 وWindows Server 2016. إذا كنت بحاجة إلى صورة متوافقة مع Windows Server 2019، فقم بتشغيل الأمر التالي بدلًا من ذلك:

    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
    

    ملاحظة

    عند تنفيذ الأمر docker run، إذا رأيت خطأ تعارض في المنفذ (أي إذا كان المنفذ المحدد قيد الاستخدام بالفعل)، فمرر منفذًا مخصصًا عن طريق تعديل أرقام المنافذ. على سبيل المثال، يمكنك تغيير المعلمة "-p 8081:8081" إلى "-p 443:8081"

  4. استخدم الآن نقطة نهاية المحاكي والمفتاح الأساسي من الاستجابة واستورد شهادة TLS / SSL إلى مضيفك. لاستيراد شهادة TLS / SSL، قم بتنفيذ الخطوات التالية من موجه أوامر المسؤول:

    cd  %LOCALAPPDATA%\CosmosDBEmulator\bind-mount
    powershell .\importcert.ps1
    
  5. إذا أغلقت الغلاف التفاعلي بعد بدء المحاكي، فسيغلق حاوية المحاكي. لإعادة فتح مستكشف البيانات، انتقل إلى عنوان URL التالي في مستعرضك. يتم توفير نقطة نهاية المحاكي في رسالة الاستجابة الموضحة أعلاه.

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

إذا كان لديك تطبيق عميل NET. يعمل على حاوية عامل إرساء Linux وإذا كنت تقوم بتشغيل محاكي Azure Cosmos DB على جهاز مضيف، فاستخدم الإرشادات الواردة في القسم التالي لاستيراد الشهادة إلى حاوية عامل تشغيل Linux.

إعادة إنشاء شهادات المحاكي

عند تشغيل المحاكي في حاوية Docker، تتم إعادة إنشاء الشهادات المرتبطة بالمحاكي في كل مرة تقوم فيها بإيقاف وإعادة تشغيل الحاوية المعنية. لهذا السبب، يتعين عليك إعادة استيراد الشهادات بعد بدء كل حاوية. للتغلب على هذا القيد، يمكنك استخدام ملف إنشاء Docker لربط حاوية Docker بعنوان بروتوكول إنترنت معين وصورة حاوية.

على سبيل المثال، يمكنك استخدام التكوين التالي داخل ملف إنشاء Docker، وتأكد من تنسيقه وفقًا لمتطلباتك:

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'

الخطوات التالية

في هذه المقالة، تعلمت كيفية استخدام محاكي محلي لتطوير توزيع محلي مجاني. يمكنك الآن المتابعة إلى المقالة التالية: