Dynamodb 撞牆筆記 – 2 – 自架的 Dynamodb Server 怎麼 restart 後資料就消失
參考此篇 stackoverflow
原來是因為我用 Docker 架設 Dynamodb Server ,而它裡面預設跑 Dynamodb 的指令參數帶有 -inMemory,資料預設都存在記憶體內,所以重開之後自然資料都沒存著。
啟動參數需調整,加上 -sharedDb 使資料存到檔案,然後加上 -dbPath 指定路徑,才能把 Dynamo 資料存在硬碟,範例如下
-jar DynamoDBLocal.jar -sharedDb -dbPath /home/dynamodblocal/data/
而以我跑 Docker 來說, Container 建立時,我調整了兩個部分:
- 上面的啟動指令要覆寫預設的 CMD
- 把儲存的資料用 volume 接到 container 外頭,不然如果之後 create container 後資料會消失,存在 host 這邊比較方便
關於第 1. 點,想進一步了解,可參考文件 docker container create,也就是下面範例的 [COMMAND] [ARG…] 這部分。
$ docker container create [OPTIONS] IMAGE [COMMAND] [ARG...]
最終參考範例如下
Docker Container 參考指令
docker run -d \ -p 8001:8000 \ -e AWS_ACCESS_KEY_ID=fakeMyKeyId \ -e AWS_SECRET_ACCESS_KEY=fakeSecretAccessKey \ -e AWS_REGION=us-west-2 \ -v /YOUR_PATH/dynamo/data:/home/dynamodblocal/data \ --name dynamo amazon/dynamodb-local:latest \ -jar DynamoDBLocal.jar -sharedDb -dbPath /home/dynamodblocal/data/
我除了在最後面覆寫預設 CMD 外,也用 -v /YOUR_PATH/dynamo/data:/home/dynamodblocal/data 的方式,把 Dynamodb 存資料的資料夾接到外頭 host 這邊。
Leave a Reply