Run DynamoDB locally with Docker:
docker run -p 8000:8000 dwmkerr/dynamodb open http://localhost:8000/shell
This container has full support for all of the commandline parameters in the DynamoDB Documentation.
Note - there is now an Official AWS Docker Image for DynamoDB:
To run an ephemeral instance of DynamoDB:
docker run -p 8000:8000 dwmkerr/dynamodb
If you want to have persistent data, just mount a volume from your host and set it as a data directory for DynamoDB:
docker run -v /data:/data -p 8000:8000 dwmkerr/dynamodb -dbPath /data
If you want to access tables and data created by the AWS CLI through a language SDK (Node, Java, etc), you will want to use the
-sharedDb option as described in this AWS forum post:
docker run -p 8000:8000 dwmkerr/dynamodb -sharedDb
Without this option, each connection will get is own database and the data will not be accessible between different clients.
The code is structued like this:
Dockerfile # the important thing, the actual dockerfile makefile # commands to build, test deploy etc tests/ # bash scripts to test how the container works
The Dockerfile is based on OpenJDK and essentially just runs a jar file in a JRSE 7 environment.
The makefile contains commands to build, test and deploy. Parameters can be passed as environment variables or through the commandline.
||Builds the image
||Runs the test scripts.|
||Deploys the images to the docker hub. If you are not logged in, you're gonna have a bad time.|
The tests are simple bash scripts which check for basic capabilties which relate to the image. This means they're not there to make sure DynamoDB Local works, they're there to make sure the docker features work with the image. For example, mounting a volume to provide a persistent data directory.
CI is provided currently by Circle. Ensure you provide AWS credentials as we are using the AWS CLI (they are not used, but the CLI still checks that they are present).
Generating an Image with Test Data
A basic sample showing how to build an image with custom test data is at
- Go to the sample:
- Create some sample data:
make create-test-data. This creates sample data files at
- Build a new docker image called
- The newly created image has the test data built in. Verify with
Please help out! Here are some areas I'd like to improve upon:
- Cleaner or colourised output for the tests. Is there any simple tool to do assets in a shell script?
If you contribute, include a
README.md update in your PR and I'll list your contributions here.