Ich habe versucht, den AzureCosmosDB-Emulator zu verwenden, bin aber süchtig danach, daher hinterlasse ich eine Notiz. AzureCosmosDB für Docker ist nur in Docker für Windows verfügbar.
Ich habe an meinen Augen gezweifelt, aber ich habe 6 GB ... Wenn Sie es in einem gemeinsam genutzten NW tun, tun Sie es nachts.
docker pull microsoft/azure-cosmosdb-emulator
Erstellen Sie ein Verzeichnis
md %LOCALAPPDATA%\CosmosDBEmulator\bind-mount
anfangen
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 microsoft/azure-cosmosdb-emulator
Hier tritt ein Fehler auf
docker: Error response from daemon: failed to create endpoint azure-cosmosdb-emulator on network nat: HNS failed with error :Der Prozess kann nicht auf die Datei zugreifen. Ein anderer Prozess wird verwendet..
Zuerst verstand ich es überhaupt nicht, aber es schien, dass es mit dem Port auf der Hostseite bedeckt war (in meinem Fall Makafi), und es funktionierte gut, indem die Porteinstellung geändert wurde, wenn Docker ausgeführt wurde.
Wenn es erfolgreich gestartet wird, befindet es sich im Powershell-Modus und wird ausgegeben. ** Bitte beachten Sie, dass der Docker gestoppt wird, wenn Sie den Powershell-Modus abbrechen. ** ** **
Key : GremlinEndpoint
Value : {http://bd876a98b564:8901/, http://172.30.166.171:8901/}
Name : GremlinEndpoint
Key : TableEndpoint
Value : {https://bd876a98b564:8902/, https://172.30.166.171:8902/}
Name : TableEndpoint
Key : Key
Value : C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==
Name : Key
Key : Version
Value : 2.4.5.0
Name : Version
Key : IPAddress
Value : 172.30.166.171
Name : IPAddress
Key : Emulator
Value : CosmosDB.Emulator
Name : Emulator
Key : CassandraEndpoint
Value : {tcp://bd876a98b564:10350/, tcp://172.30.166.171:10350/}
Name : CassandraEndpoint
Key : MongoDBEndpoint
Value : {mongodb://bd876a98b564:10255/, mongodb://172.30.166.171:10255/}
Name : MongoDBEndpoint
Key : Endpoint
Value : {https://bd876a98b564:8081/, https://172.30.166.171:8081/}
Name : Endpoint
Importieren Sie das Zertifikat auf den Host. Wenn Sie dieses Verfahren nicht befolgen, können Sie mit Ihrem Browser keine Verbindung zum Verwaltungsbildschirm herstellen.
C:\Users\xxxx\AppData\Local\CosmosDBEmulator\bind-mount>powershell .\importcert.ps1
Importing self-signed certificate generated by the Azure Cosmos DB Emulator runnning in container a9ed9a9e172b to the certificate store on XXXXXX
Sie können eine WEB-Konsole öffnen, die genau wie der Daten-Explorer von Azure Cosmos DB aussieht. Versuchen Sie, auf die Adresse + _explorer / index.html zuzugreifen, die im vorherigen Protokoll als Endpunkt ausgegeben wurde.
https://172.30.166.177:8081/_explorer/index.html
Es ist in Ordnung, wenn ein solcher Bildschirm angezeigt wird.
Wenn ich versuche, mit Java eine Verbindung zu CosmosDB herzustellen, wird der folgende Fehler angezeigt:
[pool-1-thread-1] ERROR com.microsoft.azure.documentdb.DocumentClient$DocumentDBThreadPoolExecutor - Runnable execution exception
java.lang.IllegalStateException: com.microsoft.azure.documentdb.DocumentClientException: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at com.microsoft.azure.documentdb.internal.routing.ClientCollectionCache.readCollection(ClientCollectionCache.java:35)
at com.microsoft.azure.documentdb.internal.routing.ClientCollectionCache.getByName(ClientCollectionCache.java:41)
at com.microsoft.azure.documentdb.internal.routing.CollectionCache$4.call(CollectionCache.java:148)
at com.microsoft.azure.documentdb.internal.routing.CollectionCache$4.call(CollectionCache.java:145)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: com.microsoft.azure.documentdb.DocumentClientException: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at com.microsoft.azure.documentdb.internal.GatewayProxy.performGetRequest(GatewayProxy.java:252)
at com.microsoft.azure.documentdb.internal.GatewayProxy.doRead(GatewayProxy.java:93)
at com.microsoft.azure.documentdb.internal.GatewayProxy.processMessage(GatewayProxy.java:371)
at com.microsoft.azure.documentdb.DocumentClient$8.apply(DocumentClient.java:3102)
at com.microsoft.azure.documentdb.internal.RetryUtility.executeDocumentClientRequest(RetryUtility.java:72)
at com.microsoft.azure.documentdb.DocumentClient.doRead(DocumentClient.java:3108)
at com.microsoft.azure.documentdb.DocumentClient.readCollection(DocumentClient.java:746)
at com.microsoft.azure.documentdb.internal.routing.ClientCollectionCache.readCollection(ClientCollectionCache.java:33)
... 7 more
Das Zertifikat wurde im Verfahren "Zertifikat importieren" auf den Host importiert, es scheint jedoch ein Fehler zu sein, da sich das Zertifikat nicht im Java KeyStore befindet.
Es gibt kein Problem mit der Prozedur unter der folgenden URL.
https://docs.microsoft.com/ja-jp/azure/cosmos-db/local-emulator-export-ssl-certificates
Wechseln Sie in das Verzeichnis% JAVA_HOME% / lib / security.
Fügen Sie das Zertifikat dem Keystore hinzu.
keytool -keystore cacerts -importcert -alias documentdbemulatorcert -file documentdbemulatorcert.cer
Bitte geben Sie das Keystore-Passwort ein:changeit
Inhaber: CN=localhost
Der Emittent: CN=localhost
Ordnungsnummer: 2fe969231bd7868a419cdc4067fb931a
Gültigkeitsbeginn: Tue Jul 23 09:27:31 GMT+09:00 2019 Enddatum: Sun Jul 21 09:27:31 GMT+09:00 2024
Zertifikat Fingerabdruck:
SHA1: 3F:32:E0:2E:31:32:2E:C3:1B:29:11:82:F1:7B:01:21:31:A6:5D:99
SHA256: 12:2D:B9:6A:38:44:DB:04:00:B9:AB:8E:35:A8:89:76:AD:18:0C:45:AE:01:42:3F:E6:5E:F8:21:80:53:AF:47
Name des Signaturalgorithmus: SHA1withRSA
Betreff Public-Key-Algorithmus:1024-Bit-RSA-Schlüssel
Ausführung: 3
Erweiterung:
#1: ObjectId: 2.5.29.17 Criticality=true
SubjectAlternativeName [
DNSName: a9ed9a9e172b
DNSName: localhost
IPAddress: 172.30.166.177
IPAddress: 127.0.0.1
DNSName: 172.30.166.177
DNSName: 127.0.0.1
]
Vertrauen Sie diesem Zertifikat?[Nein]: y
Zertifikat zum Keystore hinzugefügt
Stellen Sie sicher, dass das Zertifikat erfolgreich importiert wurde
keytool -list -keystore cacerts
keytool -delete -keystore cacerts -alias documentdbemulatorcert
Das lokale Einspielen von 2G-Ressourcen und das Hinzufügen zum Zertifikatsexport / Keystore sind ziemlich umständlich, daher habe ich mir Sorgen gemacht, es so zu verwenden, wie es ist ...
Recommended Posts