Edited at

Docker(Docker Compose)から DynamoDB Local を使う際にデータを永続化する

2018/11/15 更新

DynamoDB Local を実行するユーザにディレクトリへの書き込み権限が無いと正しく動かなったので修正。


2018年8月ごろ?(うろ覚え)にDynamoDB Local の公式 Docker イメージが利用できるようになった。

しかし、デフォルトでは -inMemory オプションで起動されるため、コンテナを落とすとテーブル定義を含むデータがすべて消えてしまう。

代わりに -dbPath オプションを指定して起動させることで、コンテナを落としてもデータを失わずに済む。


docker-compose.yml(一例)

version: "3"

services:
dynamodb:
build: ./dynamodb
volumes:
- dynamodb_data:/home/dynamodblocal/data
ports:
- 8000:8000
command: -jar DynamoDBLocal.jar -dbPath ./data

volumes:
dynamodb_data:



dynamodb/Dockerfile

FROM amazon/dynamodb-local

WORKDIR /home/dynamodblocal

# UID=1000 → DynamoDB Local の実行ユーザ
RUN mkdir data && chown -R 1000 data



参考