如何使本地dynamodb运行,​​以便我的Java应用程序可以与其连接?

时间:2019-02-26 04:45:51

标签: java docker amazon-dynamodb

我看了一些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应用程序连接到它?

1 个答案:

答案 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