|
| 1 | +# Supported tags and respective `Dockerfile` links |
| 2 | + |
| 3 | +- [`2.5.5`, `2.5` (*jessie/2.5.5/Dockerfile*)](https://github.com/arangodb/arangodb-docker/blob/636cd874df38edd77a187c08e1803693b3d978d3/jessie/2.5.5/Dockerfile) |
| 4 | +- [`2.6.2`, `2.6`, `latest` (*jessie/2.6.2/Dockerfile*)](https://github.com/arangodb/arangodb-docker/blob/880ef700389025c8ed9220a3f6211365b774ed0a/jessie/2.6.2/Dockerfile) |
| 5 | + |
| 6 | +For more information about this image and its history, please see the [relevant manifest file (`library/arangodb`)](https://github.com/docker-library/official-images/blob/master/library/arangodb) in the [`docker-library/official-images` GitHub repo](https://github.com/docker-library/official-images). |
| 7 | + |
| 8 | +# What is ArangoDB? |
| 9 | + |
| 10 | +ArangoDB is a multi-model, open-source database with flexible data models for documents, graphs, and key-values. Build high performance applications using a convenient SQL-like query language or JavaScript extensions. Use ACID transactions if you require them. Scale horizontally and vertically with a few mouse clicks. |
| 11 | + |
| 12 | +The supported data models can be mixed in queries and allow ArangoDB to be the aggregation point for the data request you have in mind. |
| 13 | + |
| 14 | +> [arangodb.com](https://arangodb.com) |
| 15 | +
|
| 16 | + |
| 17 | + |
| 18 | +##Key Features in ArangoDB |
| 19 | + |
| 20 | +**Multi-Model** Documents, graphs and key-value pairs — model your data as you see fit for your application. |
| 21 | + |
| 22 | +**Joins** Conveniently join what belongs together for flexible ad-hoc querying, less data redundancy. |
| 23 | + |
| 24 | +**Transactions** Easy application development keeping your data consistent and safe. No hassle in your client. |
| 25 | + |
| 26 | +Joins and Transactions are key features for flexible, secure data designs, widely used in RDBMSs that you won't want to miss in NoSQL products. You decide how and when to use Joins and strong consistency guarantees, keeping all the power for scaling and performance as choice. |
| 27 | + |
| 28 | +Furthermore, ArangoDB offers a microservice framework called [Foxx](https://www.arangodb.com/foxx) to build your own Rest API with a few lines of code. |
| 29 | + |
| 30 | +ArangoDB Documentation |
| 31 | + |
| 32 | +- [ArangoDB Documentation](https://www.arangodb.com/documentation) |
| 33 | +- [ArangoDB Tutorials](https://www.arangodb.com/tutorials) |
| 34 | + |
| 35 | +## How to use this image |
| 36 | + |
| 37 | +### Start an `ArangoDB` instance |
| 38 | + |
| 39 | +In order to start an ArangoDB instance run |
| 40 | + |
| 41 | + unix> docker run -d --name arangodb-instance arangodb |
| 42 | + |
| 43 | +Will create and launch the arangodb docker instance as background process. The Identifier of the process is printed - the plain text name will be *arangodb-instance* as you stated above. 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. |
| 44 | + |
| 45 | +In order to get the IP arango listens on run: |
| 46 | + |
| 47 | + docker inspect --format '{{ .NetworkSettings.IPAddress }}' arangodb-instance |
| 48 | + |
| 49 | +### Using the instance |
| 50 | + |
| 51 | +In order to use the running instance from an application, link the container |
| 52 | + |
| 53 | + unix> docker run --name my-arangodb-app --link arangodb-instance:db-link arangodb |
| 54 | + |
| 55 | +This will use the instance with the name `arangodb-instance` and link it into the application container. The application container will contain environment variables |
| 56 | + |
| 57 | + DB_LINK_PORT_8529_TCP=tcp://172.17.0.17:8529 |
| 58 | + DB_LINK_PORT_8529_TCP_ADDR=172.17.0.17 |
| 59 | + DB_LINK_PORT_8529_TCP_PORT=8529 |
| 60 | + DB_LINK_PORT_8529_TCP_PROTO=tcp |
| 61 | + DB_LINK_NAME=/naughty_ardinghelli/db-link |
| 62 | + |
| 63 | +These can be used to access the database. |
| 64 | + |
| 65 | +### Exposing the port to the outside world |
| 66 | + |
| 67 | +If you want to expose the port to the outside world, run |
| 68 | + |
| 69 | + unix> docker run -p 8529:8529 -d arangodb |
| 70 | + |
| 71 | +ArangoDB listen on port 8529 for request and the image includes `EXPOST 8529`. The `-p 8529:8529` exposes this port on the host. |
| 72 | + |
| 73 | +## Persistent Data |
| 74 | + |
| 75 | +ArangoDB use the volume `/var/lib/arangodb` as database directory to store the collection data and the volume `/var/lib/arangodb-apps` as apps directory to store any extensions. These directories are marked as docker volumes. |
| 76 | + |
| 77 | +A good explanation about persistence and docker container can be found here: [Docker In-depth: Volumes](http://container42.com/2014/11/03/docker-indepth-volumes/), [Why Docker Data Containers are Good](https://medium.com/@ramangupta/why-docker-data-containers-are-good-589b3c6c749e) |
| 78 | + |
| 79 | +### Using host directories |
| 80 | + |
| 81 | +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! |
| 82 | + |
| 83 | + unix> mkdir /tmp/arangodb |
| 84 | + unix> docker run -p 8529:8529 -d \ |
| 85 | + -v /tmp/arangodb:/var/lib/arangodb \ |
| 86 | + arangodb |
| 87 | + |
| 88 | +This will use the `/tmp/arangodb` directory of the host as database directory for ArangoDB inside the container. |
| 89 | + |
| 90 | +## Using a custom ArangoDB configuration file |
| 91 | + |
| 92 | +The ArangoDB startup configuration is specified in the file `/etc/arangodb/arangodb.conf`. If you want to use a customized ArangoDB configuration, you can create your alternative configuration file in a directory on the host machine and then mount that directory location as `/etc/arangodb` inside the `arangodb` container. |
| 93 | + |
| 94 | +If `/my/custom/arangod.conf` is the path of your arangodb configuration file, you can start your `arangodb` container like this: |
| 95 | + |
| 96 | + docker run --name some-arangodb -v /my/custom:/etc/arangodb -d arangodb:tag |
| 97 | + |
| 98 | +This will start a new container `some-arangodb` where the ArangoDB instance uses the startup settings from your config file instead of the default one. |
| 99 | + |
| 100 | +Note that users on host systems with SELinux enabled may see issues with this. The current workaround is to assign the relevant SELinux policy type to your new config file so that the container will be allowed to mount it: |
| 101 | + |
| 102 | + chcon -Rt svirt_sandbox_file_t /my/custom |
| 103 | + |
| 104 | +### Using a data container |
| 105 | + |
| 106 | +Alternatively you can create a container holding the data. |
| 107 | + |
| 108 | + unix> docker run -d --name arangodb-persist -v /var/lib/arangodb debian:8.0 true |
| 109 | + |
| 110 | +And use this data container in your ArangoDB container. |
| 111 | + |
| 112 | + unix> docker run --volumes-from arangodb-persist -p 8529:8529 arangodb |
| 113 | + |
| 114 | +If want to save a few bytes you can alternatively use [hello-world](https://registry.hub.docker.com/_/hello-world/), [busybox](https://registry.hub.docker.com/_/busybox/) or [alpine](https://registry.hub.docker.com/_/alpine/) for creating the volume only containers. For example: |
| 115 | + |
| 116 | + unix> docker run -d --name arangodb-persist -v /var/lib/arangodb alpine alpine |
| 117 | + |
| 118 | +# License |
| 119 | + |
| 120 | +[Arangodb itself is licensed under the Apache License](https://github.com/arangodb/arangodb/blob/devel/LICENSE), but it contains [software of third parties under their respective licenses](https://github.com/arangodb/arangodb/blob/devel/LICENSES-OTHER-COMPONENTS.md). |
| 121 | + |
| 122 | +# Supported Docker versions |
| 123 | + |
| 124 | +This image is officially supported on Docker version 1.7.1. |
| 125 | + |
| 126 | +Support for older versions (down to 1.0) is provided on a best-effort basis. |
| 127 | + |
| 128 | +# User Feedback |
| 129 | + |
| 130 | +## Documentation |
| 131 | + |
| 132 | +Documentation for this image is stored in the [`arangodb/` directory](https://github.com/docker-library/docs/tree/master/arangodb) of the [`docker-library/docs` GitHub repo](https://github.com/docker-library/docs). Be sure to familiarize yourself with the [repository's `README.md` file](https://github.com/docker-library/docs/blob/master/README.md) before attempting a pull request. |
| 133 | + |
| 134 | +## Issues |
| 135 | + |
| 136 | +If you have any problems with or questions about this image, please contact us through a [GitHub issue](https://github.com/arangodb/arangodb-docker/issues). |
| 137 | + |
| 138 | +You can also reach many of the official image maintainers via the `#docker-library` IRC channel on [Freenode](https://freenode.net). |
| 139 | + |
| 140 | +## Contributing |
| 141 | + |
| 142 | +You are invited to contribute new features, fixes, or updates, large or small; we are always thrilled to receive pull requests, and do our best to process them as fast as we can. |
| 143 | + |
| 144 | +Before you start to code, we recommend discussing your plans through a [GitHub issue](https://github.com/arangodb/arangodb-docker/issues), especially for more ambitious contributions. This gives other contributors a chance to point you in the right direction, give you feedback on your design, and help you find out if someone else is working on the same thing. |
0 commit comments