home shape

Running ArangoDB Made Simple: Step-by-Step Guide

docker run -p 8529:8529 arangodb/arangodb

I’ve created an automated build repository on docker, so that you can easily start a docker container with the latest stable release. If you miss anything in the container, please let me know. Thanks to frodenas, hipertracker, joaodubas, webwurst who also created dockerfiles.

ArangoDB

A distributed open-source database with a flexible data model for documents, graphs, and key-values. Build high performance applications using a convenient sql-like query language or JavaScript extensions.

Start a ArangoDB instance

In order to start an ArangoDB instance run

unix> docker run --name arangodb-instance -d arangodb/arangodb

By default ArangoDB listen on port 8529 for request and the image includes EXPOST 8529. If you link an application container, it is automatically available in the linked container. See the following examples.

Using the instance

In order to use the running instance from an application, link the container

unix> docker run --name my-app --link arangodb-instance

Running the image

In order to start an ArangoDB instance run

unix> docker run -p 8529:8529 -d arangodb/arangodb

ArangoDB listen on port 8529 for request and the image includes EXPOST 8529. The -p 8529:8529 exposes this port on the host.

Command line options

In order to get a list of supported options, run

unix> docker run -e help=1 arangodb/arangodb

Persistent Data

ArangoDB use the volume /data as database directory to store the collection data and the volume /apps as apps directory to store any extensions. These directory are marked as docker volumes.

See docker run -e help=1 arangodb for all volumes.

A good explanation about persistence and docker container can be found here: Docker In-depth: Volumes, Why Docker Data Containers are Good Using host directories

Using host directories

You can map the container’s volumes to a directory on the host, so that the data is kept between runs of the container. This path /tmp/arangodb is in general not the correct place to store you persistent files – it is just an example!

unix> mkdir /tmp/arangodb
unix> docker run -p 8529:8529 -d \
          -v /tmp/arangodb:/data \
          arangodb

This will use the /tmp/arangodb directory of the host as database directory for ArangoDB inside the container. Using a data container

Using a data container

Alternatively you can create a container holding the data.

unix> docker run -d --name arangodb-persist -v /data ubuntu:14.04 true

And use this data container in your ArangoDB container.

unix> docker run --volumes-from arangodb-persist -p 8529:8529 arangodb

If want to save a few bytes for you can alternatively use tianon/true or progrium/busybox for creating the volume only containers. For example

unix> docker run -d --name arangodb-persist -v /data tianon/true true

Images

Building an image

Simple clone the repository and execute the following command in the arangodb-docker folder

unix> docker build -t arangodb .

This will create a image named arangodb.

Frank Celler

Frank Celler

Frank is both entrepreneur and backend developer, developing mostly memory databases for two decades. He is the CTO and co-founder of ArangoDB. Try to challenge Frank asking him questions on C, C++ and MRuby. Besides Frank organizes Cologne’s NoSQL group & is an active member of NoSQL community.

7 Comments

  1. Antonis Karagiannis on November 25, 2014 at 11:57 am

    Nice to see Docker Integration/Support, especially with examples for basic usage. Thanks!

    • fceller on November 27, 2014 at 9:40 am

      Let me know, if you encounter any problems.

  2. Hareem Haque on November 25, 2014 at 7:14 pm

    Would you kindly do a write up explaining how to use your docker container to setup a working cluster of ArangoDB ?

    • fceller on November 27, 2014 at 9:40 am

      We are currently working on a “cluster” container.

      • Aluxian on June 15, 2015 at 12:07 pm

        Hey @fceller:disqus, any updates on the cluster container?

  3. Jon Richter on November 25, 2014 at 8:01 pm

    For data containers, I always like to use the Busybox image, as it is much more lightweight than Trusty.

    • fceller on November 27, 2014 at 9:40 am

      I’ve added a comment about “busybox” or “true” in the README.

Leave a Comment





Get the latest tutorials, blog posts and news: