我看了一些stackoverflow帖子以及dynamodb的AWS文档来回答这个问题。我希望能够在docker中运行本地dynamodb,然后从本地运行的Java应用程序连接到它。我已经安装了Amazon / dynamodb-local映像并使其正常工作。我什至用aws cli在此本地运行的dynamodb上创建表,列出表,删除表等。我在Java项目中安装了dynamodb sdk依赖项,感觉好像一切都已准备就绪,进行了集成测试,但我收到了此错误消息
com.amazonaws.services.dynamodbv2.model.ResourceNotFoundException:无法对不存在的表执行操作(服务:AmazonDynamoDBv2;状态代码:400;错误代码:ResourceNotFoundException;请求ID:c915ea26-008e-4a9f-8b99- 6df5d6aa7c5f)
使用aws cli运行list-tables函数时,该表确实存在,因此我用谷歌搜索,然后检查了文档dynamodb docs,看来您必须用一个标志来启动本地dynamodb
-sharedDb
我通过尝试使用此命令启动在本地运行的dynamodb进行了尝试
docker run -p 8000:8000 amazon/dynamodb-local -sharedDb
虽然我得到了错误
无法识别的选项:-sharedDb 错误:无法创建Java虚拟机。 错误:发生致命异常。程序将退出。
此后,我尝试使用Google搜索或寻找遇到类似问题的人。但是我什么也没找到。 如何启动本地运行的dynamodb并从本地运行的Java应用程序连接到它?
答案 0 :(得分:1)
您需要这样编写命令
docker run -p 8000:8000 amazon/dynamodb-local -jar DynamoDBLocal.jar -sharedDb
请不要忘记您可能需要挂载卷以将数据保留在主机上,因为如果您删除了容器,使用上述命令将无法保存数据,为此您需要使用{{ 1}}标志
-v
要使用更多选项(请注意docker run -p 8000:8000 -v /path/to/data/locally:/data/ amazon/dynamodb-local -jar DynamoDBLocal.jar -sharedDb -dbPath /data
标志)
--rm