logo头像

Edward.K Thinking

建置 Docker for Azure Cosmos DB模擬器


Azure Cosmos DB是一套可以儲存非結構化資料的DB,本身是屬於No-SQL資料庫,但是,如果再開發時候,每次都要連到雲端Cosmos DB並不是非常方便,且如果有時候又是再針對正式環境進行開發與測試,就不是那麼簡單的事情。因此,就必須想辦法在地端也搞一套來測試看看,所以,就必須在本機安裝Cosmos DB模擬器。

安裝模擬器


使用Cosmos DB模擬器,本身Cosmos DB模擬器提供Azure Cosmos DB服務的高度類似的模擬環境,基本功能上都是可以使用,只是在擴充與延展性部分不可能與Azure服務相同,同時,也不支援資料表圖形Cassandra API服務。不過,對於只使用SQL API的人來說,基本上就已經足夠可以使用。本身模擬器支援有兩種方式安裝

  • Cosmos DB安裝檔
  • Cosmos for docker

既然Docker這樣流行,那就來安裝Docker版本的Cosmos DB吧。首先,必須從Docker Hub下載image檔案,這個image並不小,所以,下載時候會需要一點時間,另外,這個image只能跑在windows container上

1
docker pull microsoft/azure-cosmosdb-emulator

下載image完成後,就要開始啟動Cosmos DB for Docker模擬器,啟動指令如下

1
2
3
4
1.c:\> set containerName=azure-cosmosdb-emulator-container
2.c:\> set hostDirectory=%LOCALAPPDATA%\CosmosDbEmulatorCert
3.c:\> md %hostDirectory% 2>nul
4.c:\>docker run --name %containerName% --memory 2GB --mount "type=bind,source=%hostDirectory%,destination=C:\CosmosDB.Emulator\CosmosDbEmulatorCert" -P --interactive --tty microsoft/azure-cosmosdb-emulator

啟動成功後,會進入Docker裡面,並且得到下面資訊


要連入Cosmos DB模擬器的網址,以上圖為例,其登入網址為https://172.24.8.82:8081/_explorer/index.html,每次重新啟動docker,其模擬器的Endpoit就會改變。此外,還有一點,因為啟動docker後,會直接進入容器內,如果,這時候下exit指令退出Docker,Cosmos DB模擬器就會被自動關掉,所以,要避免此動作。


如果透過網址登入模擬器發生SSL憑證錯誤,其解決辦法就是把本機的SSL匯入,這時候還不可以退出容器,就用另一個Command下達下面指令

1
2
1.C:\> cd %LOCALAPPDATA%\CosmosDBEmulatorCert
2.C:\> powershell .\importcert.ps1

這樣就可以登入了

測試模擬器


要連線到Cosmos DB模擬器,作法其實跟連線到Azure Cosmos DB是相同的做法,都必須下載Cosmos SDK,要連線到Cosmos DB,最重要的兩樣東西就是URL和Key,這兩樣東西在可以在模擬器介面的quickstart選項找到,如下圖


不過,因為我們這邊使用的是docker,所以,並不能直接使用localhost:8081,必須改用上面的172.24.8.82:8081才可以,所以,只要把URLPrimary放到連線字串,就可以與模擬器溝通了

上一篇