M1 MacだとCosmosDBエミュレータが動かなかったのでその記録
まずは、こちらを読んでいく。
現在、Linux エミュレーターでは、M1 チップと M2 チップで実行されている開発者マシンのサポートが制限されています。
すでに詰んでいる気がするが、制限されているだけで使えないというわけではないのだろうか・・?
結論、最終的にやはり無理というのがわかった。
回避策もちゃんと書かれていた。
一時的な回避策は、Windows 仮想マシンをインストールし、そのプラットフォームでエミュレーターを実行することです。
ただ、このためにWindows 仮想マシンをインストールするというのもめんどくさいから諦めた。
https://learn.microsoft.com/ja-jp/azure/cosmos-db/emulator
とにかく動かしてみよう。
以下を参考にcompose.yamlを作ります。
compose.yaml
version: "3"
services:
cosmosdb:
image: mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:latest
environment:
- AZURE_COSMOS_EMULATOR_PARTITION_COUNT=10
- AZURE_COSMOS_EMULATOR_ENABLE_DATA_PERSISTENCE=true
ports:
- 8081:8081
- 10251:10251
- 10252:10252
- 10253:10253
- 10254:10254
volumes:
- ./data:/data
CosmosDBの直接接続ポートのデフォルトは10251,10252,10253,10254という情報を見ました。なので、念の為上記では10251,10252,10253,10254をマッピングしています。
windows – CosmosDB emulator can’t start since port is already in use – Stack Overflow
作成後、当該ディレクトリでdocker compose upします。
でエラーが出ます。
✔ Container cosmosdb-cosmosdb-1 Recreated 0.1s
Attaching to cosmosdb-cosmosdb-1
cosmosdb-cosmosdb-1 | ./cosmosdb-emulator: ERROR: Invalid mapping of address 0x40037da000 in reserved address space below 0x400000000000. Possible causes:
cosmosdb-cosmosdb-1 | 1) the process (itself, or via a wrapper) starts-up its own running environment sets the stack size limit to unlimited via syscall setrlimit(2);
cosmosdb-cosmosdb-1 | 2) the process (itself, or via a wrapper) adjusts its own execution domain and flag the system its legacy personality via syscall personality(2);
cosmosdb-cosmosdb-1 | 3) sysadmin deliberately sets the system to run on legacy VA layout mode by adjusting a sysctl knob vm.legacy_va_layout.
cosmosdb-cosmosdb-1 |
cosmosdb-cosmosdb-1 |
cosmosdb-cosmosdb-1 exited with code 1
ディスカッション
コメント一覧
いつも有益な記事を共有いただきありがとうございます。
私もM1 Macの環境構築で苦労しているので、大変勉強になりました。
メッセージありがとうございます!励みになります><