Skip to main content

Overview

This template provides a production‑ready ArangoDB instance as a Monk runnable. You can:
  • Run it directly to get a managed ArangoDB container with sensible defaults
  • Inherit it in your own runnable to seamlessly add a multi-model database to your stack
ArangoDB is a native multi-model database with flexible data models for documents, graphs, and key-values. It supports SQL-like queries with AQL (ArangoDB Query Language) and provides built-in graph traversal capabilities.

What this template manages

  • ArangoDB container (arangodb image, configurable tag)
  • Network service on port 8529
  • Persistent volumes for data storage
  • Root user authentication

Quick start (run directly)

  1. Load templates
monk load MANIFEST
  1. Run ArangoDB with defaults
monk run arangodb/db
  1. Customize credentials (recommended via inheritance)
Running directly uses the defaults defined in this template’s variables. Secrets added with monk secrets add will not affect this runnable unless you inherit it and reference those secrets.
  • Preferred: inherit and replace variables with secret("...") as shown below.
  • Alternative: fork/clone and edit the variables in arangodb.yml, then monk load MANIFEST and run.
Once started, connect to localhost:8529 (or the runnable hostname inside Monk networks) using the configured credentials.

Configuration

Key variables you can customize in this template:
variables:
  image: "latest"                    # container image tag
  root_password: "monk"              # ROOT password (env: ARANGO_ROOT_PASSWORD)
  db_port: 8529                      # ArangoDB port
Data is persisted under ${monk-volume-path}/arangodb/data on the host. Inherit the ArangoDB runnable in your application and declare a connection. Example:
namespace: myapp
db:
  defines: runnable
  inherits: arangodb/db
api:
  defines: runnable
  containers:
    api:
      image: myorg/api
  connections:
    database:
      runnable: db
      service: db
  variables:
    database-host:
      value: <- connection-hostname("database")
    database-password:
      value: <- secret("arango-root-password")
Then set the secrets once and run your app group:
monk secrets add -g arango-root-password="STRONG_ROOT_PASSWORD"
monk run myapp/api

Ports and connectivity

  • Service: db on TCP port 8529
  • From other runnables in the same process group, use connection-hostname("\<connection-name>") to resolve the DB host.

Persistence and configuration

  • Data path: ${monk-volume-path}/arangodb/data:/var/lib/arangodb3
  • ArangoDB stores documents, graphs, and key-value data in the same database
  • For ArangoDB cluster, configure coordinators, DB servers, and agents
  • Use with graph analytics and machine learning workflows
  • Combine with grafana/ for performance visualization

Troubleshooting

  • If you changed root_password but the container has existing data, authentication may fail. Either reset the data volume or update the password inside the DB to match.
  • Ensure the host volumes are writable by the container user.
  • Check logs:
monk logs -l 500 -f local/arangodb/db