Skip to main content

ArangoDB

What is ArangoDB?

ArangoDB is a multi-model database that combines document, graph, and key/value storage behind one query language, AQL. It's a graph-capable alternative to running Neo4j alongside a separate document store. Laradock runs it straight from the official arangodb image.

Start ArangoDB

./laradock start arangodb

Your data is created on first start and kept between restarts. Name any other services alongside it to start them together, for example ./laradock start arangodb workspace.

Stop ArangoDB

Stopping just pauses the container; your data is safe:

./laradock stop arangodb

Data is kept in the named arangodb Docker volume, not under DATA_PATH_HOST.

To delete the container entirely (the volume, and everything in it, is still untouched):

./laradock remove arangodb

Configuration

All settings live in arangodb/defaults.env and can be overridden by adding the same line to your own .env:

VariableDefaultWhat it does
ARANGODB_VERSION3.12Image tag from the official ArangoDB image.
ARANGODB_PORT8529Host-side port for the web UI and API (container port 8529).
ARANGODB_ROOT_PASSWORDsecretPassword for the root user.

Change the ArangoDB version

Set the version in your .env:

ARANGODB_VERSION=3.11

Then apply the change (ArangoDB is pulled by tag, not built locally, so starting it again is enough to pull the new tag):

./laradock start arangodb

Crossing a major version against existing data can require ArangoDB's own upgrade procedure, check ArangoDB's upgrade docs before jumping versions on a real dataset, or back up first.

Open the web UI

http://localhost:8529

Log in as root with ARANGODB_ROOT_PASSWORD.

Check the API from the command line

curl http://localhost:8529/_api/version

Use the arangosh shell

Default root credentials are root / secret (ARANGODB_ROOT_PASSWORD). Open a terminal inside the ArangoDB container, then start the interactive shell:

./laradock enter arangodb
arangosh --server.password secret
db._databases();
db._collections();

Backup and restore

Export (back up) your data to a folder inside the container, using ArangoDB's own arangodump tool:

./laradock exec arangodb arangodump --server.username root --server.password secret --output-directory /tmp/dump --overwrite true

Then copy the dump out to your host (no CLI shortcut for this one, it's a plain docker compose cp):

docker compose cp arangodb:/tmp/dump ./arangodb-backup

Restore (import) your data from a dump folder: copy it into the container, then run arangorestore.

docker compose cp ./arangodb-backup arangodb:/tmp/dump
./laradock exec arangodb arangorestore --server.username root --server.password secret --input-directory /tmp/dump

This dumps/restores the database arangodump/arangorestore default to (_system). Pass --server.database <name> to target a different one.

Start completely fresh (wipe all data)

To throw away everything and start ArangoDB from a clean, empty state (⚠️ this permanently deletes all databases, collections, and graphs, back up first if you need anything):

./laradock stop arangodb
./laradock remove arangodb

Unlike most Laradock database services, ArangoDB persists to a named Docker volume, not DATA_PATH_HOST, so removing the container alone doesn't wipe the data. Drop the volume too:

docker volume rm ${COMPOSE_PROJECT_NAME:-laradock}_arangodb

Then start it again:

./laradock start arangodb

Not sure of the exact volume name on your machine? Run docker volume ls | grep arangodb to find it first.

Talk to this database from another Laradock project

Each Laradock project is its own isolated Docker network by default, so a second project's containers can't reach this ArangoDB by container name out of the box. Easiest fix: publish the port (already done, ARANGODB_PORT) and have the other project connect to your host machine's address instead of arangodb, for example host.docker.internal (Docker Desktop) on this project's ARANGODB_PORT. Make sure the two projects use different ARANGODB_PORT values if they're both running at once.

Common issues

  • Changing ARANGODB_VERSION doesn't take effect. ArangoDB is pulled by image tag, not built locally, restart after changing it: ./laradock start arangodb. Crossing a major version against existing data can require ArangoDB's own upgrade procedure, check their docs before jumping versions on a real dataset.
  • Data isn't where you expect. Unlike most Laradock database services, ArangoDB persists to a named Docker volume (arangodb), not DATA_PATH_HOST. Use docker volume inspect <project>_arangodb to find it on disk, or see Start completely fresh to wipe just that volume.
  • Port already in use on your host. Change ARANGODB_PORT in .env and restart: ./laradock restart arangodb.
  • Forgot the root password. It's only applied on first boot into a fresh volume. If you changed ARANGODB_ROOT_PASSWORD after that, either reset it from inside arangosh or start completely fresh (data loss).

Need a different multi-model option? See SurrealDB. Back to the Getting Started guide.