J'ai essayé d'utiliser l'émulateur AzureCosmosDB, mais j'y suis accro, je vais donc laisser une note. AzureCosmosDB pour Docker est uniquement disponible à partir de Docker pour Windows.
J'ai douté de mes yeux, mais j'ai 6 Go ... Si vous le faites sur un NW partagé, faites-le la nuit.
docker pull microsoft/azure-cosmosdb-emulator
Créer un annuaire
md %LOCALAPPDATA%\CosmosDBEmulator\bind-mount
commencer
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
Une erreur se produit ici
docker: Error response from daemon: failed to create endpoint azure-cosmosdb-emulator on network nat: HNS failed with error :Le processus ne peut pas accéder au fichier. Un autre processus est en cours d'utilisation..
Au début, je ne comprenais pas du tout, mais il semblait qu'il était recouvert du port côté hôte (Makafi dans mon cas), et cela fonctionnait bien en changeant le paramètre du port lorsque le docker fonctionnait.
S'il démarre correctement, il sera en mode PowerShell et ce sera affiché. ** Veuillez noter que si vous annulez le mode PowerShell, le docker sera arrêté. ** **
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
Importez le certificat sur l'hôte. Si vous ne suivez pas cette procédure, vous ne pourrez pas vous connecter à l'écran de gestion avec votre navigateur.
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
Vous pouvez ouvrir une console WEB qui ressemble exactement à l'explorateur de données d'Azure Cosmos DB. Essayez d'accéder à l'adresse + _explorer / index.html qui est sorti en tant que point de terminaison dans le journal précédent.
https://172.30.166.177:8081/_explorer/index.html
C'est OK si un tel écran apparaît.
Lorsque j'essaye de me connecter à CosmosDB avec Java, j'obtiens l'erreur suivante:
[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
Le certificat a été importé vers l'hôte par la procédure "Importer le certificat", mais cela semble être une erreur car le certificat ne se trouve pas dans le Java KeyStore.
Il n'y a aucun problème avec la procédure à l'URL suivante.
https://docs.microsoft.com/ja-jp/azure/cosmos-db/local-emulator-export-ssl-certificates
Accédez au répertoire% JAVA_HOME% / lib / security.
Ajoutez le certificat au keystore.
keytool -keystore cacerts -importcert -alias documentdbemulatorcert -file documentdbemulatorcert.cer
Veuillez saisir le mot de passe du fichier de clés:changeit
propriétaire: CN=localhost
Émetteur: CN=localhost
Numéro de série: 2fe969231bd7868a419cdc4067fb931a
Date de début de validité: Tue Jul 23 09:27:31 GMT+09:00 2019 date de fin: Sun Jul 21 09:27:31 GMT+09:00 2024
Empreinte digitale du certificat:
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
Nom de l'algorithme de signature: SHA1withRSA
Algorithme de clé publique du sujet:Clé RSA 1024 bits
version: 3
Expansion:
#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
]
Faites-vous confiance à ce certificat?[Non]: y
Certificat ajouté au keystore
Assurez-vous que le certificat a été importé avec succès
keytool -list -keystore cacerts
keytool -delete -keystore cacerts -alias documentdbemulatorcert
Apporter des ressources 2G localement et ajouter à l'exportation de certificat / Keystore est plutôt fastidieux, donc je craignais de l'utiliser tel quel ...