docker
DynamoDB
docker-compose

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

参考