如何在没有-inMemory标志的情况下在Docker中运行dynamodb-local

问题描述

根据docs,有2个标志会影响dynamodb-local的运行

-inMemory->使所有数据仅在服务终止时才保留在RAM中-所有数据都将被删除

-sharedDB->使所有登录名都写入同一共享文件

不切换->每个凭据登录将数据保留在不同的文件中-这是认行为

但是,如果您查看docker.hub,则会看到在docker中运行dynamodb-local时的认行为是带有-inMemory标志。但我不想要它,而是想要真正的认行为。 如何覆盖它?

解决方法

好吧,很难找到它,但这是一个非常简单的解决方案。

根据此great post,我们可以轻松地覆盖docker pull image的[CMD]部分。

我们只需要在docker运行后添加args。这是我使用的命令:

docker run -p 8000:8000 --name local-dynamodb amazon/dynamodb-local -jar DynamoDBLocal.jar

-p用于定义要公开的端口,因此您的应用程序可以在端口8000上与dynamodb-local联系

--name用于为图像赋予可读的名称

amazon/dynamodb-local之后的所有内容都是最重要的部分,预定义的入口点是JAVA,因此我们只需要添加-jar开关,指定要运行的文件名,并忽略该邪恶-inMemory开关

祝你好运!和快乐编码