Installation: Running in a Docker Container


  • RavenDB can be launched using Docker.
  • Stable and LTS Docker images of RavenDB Server are available for Ubuntu Linux and Windows Nano Server.
  • Information related to setting and running RavenDB on Docker is available in this page and in the RavenDB dockerhub page.
  • Upgrading RavenDB 5.x or lower to RavenDB 6.0 or higher requires a simple migration procedure.

  • In this page:


Requirements

  • Docker Configuration
    Use the default Docker networking configuration.
  • Security
    Do not expose the Docker instance beyond the host machine.

    If you Do intend to host RavenDB on Docker and expose it externally, please make sure the server is secure.

  • Storage
    • Non-NFS file systems are Supported.
      NTFS, Ext4, and other non-NFS volume mounts' file systems are supported.
    • SMB and CIFS mounts are not supported.
      Linux Docker containers running under Windows Docker hosts via shared volumes are not supported due to CIFS protocol usage.
  • Platforms
    RavenDB images are available for:

Setup and Execution

RavenDB Versions

To install or run a Docker RavenDB image use an updated stable or nightly version.


Available Image Tags

Use the following tags to install the latest Stable or LTS RavenDB Server version.

  • Latest RavenDB version

    • Tag: latest / ubuntu-latest
      Latest RavenDB version, running on Ubuntu container
    • Tag: windows-latest
      Latest RavenDB version, running on Windows Nano Server
    • Tag: windows-1809-latest
      Latest RavenDB version, running on Windows Nano Server version 1809
    • Tag: windows-ltsc2022-latest
      Latest RavenDB version, running on Windows Nano Server version LTSC2022
    • An updated tags list is available here.
  • Latest RavenDB LTS version

    • Tag: latest-lts / ubuntu-latest-lts
      Latest RavenDB LTS version, running on Ubuntu container
    • Tag: windows-latest-lts
      Latest RavenDB LTS version, running on Windows Nano Server
    • Tag: windows-1809-latest-lts
      Latest RavenDB LTS version, running on Windows Nano Server version 1809
    • Tag: windows-ltsc2022-latest-lts
      Latest RavenDB LTS version, running on Windows Nano Server version LTSC2022
    • An updated tags list is available here

Running a RavenDB image

To install or run RavenDB start the Docker service, and run a RavenDB image manually or using a script.

  • Running manually:
    Run RavenDB using docker run, e.g. -
    Ubuntu image: $ docker run -p 8080:8080 ravendb/ravendb:ubuntu-latest
    Windows image: $ docker run -p 8080:8080 ravendb/ravendb:windows-latest

  • Running using a script:
    Run a RavenDB image using a dedicated script for Ubuntu or Windows.
    Ubuntu-based image script
    Windows-based image script

Setup and Management

After running the image, access it from a browser using its URL.
By default: http://localhost:8080

If the server is not installed yet, connecting it will start the Setup Wizard.
After installing the server, connecting it will open its management studio.


Sharing data with Docker Host

To share data with the Docker host using Docker for Windows:

  • The Docker client application must have sharing enabled.
  • The directory (e.g. C:\RavenDb\Data) must exist.

Dockerfiles

The Dockerfiles used to build RavenDB Server images and their assets can be found at:


Persisting Data

To install using the latest tag, and persist the data stored on your hard disk if the container is removed, you can use:

docker run --rm -d -p 8080:8080 -p 38888:38888 -v /var/lib/ravendb/data ravendb/ravendb
  • The data will now remain available even if the container is removed.
  • When you start a new instance of the image using a volume mounted to the same directory, the data will still be available.
  • To keep persistence, RavenDB data in a Windows container is always kept in this location: C:/RavenDB/Server/RavenData

Skipping the Setup Wizard

To start the RavenDB container on your localhost without running through the Setup Wizard each time, you can use:

docker run --rm -d -p 8080:8080 -p 38888:38888 -v /var/lib/ravendb/data --name RavenDb-WithData 
-e RAVEN_Setup_Mode=None -e RAVEN_License_Eula_Accepted=true 
-e RAVEN_Security_UnsecuredAccessAllowed=PrivateNetwork ravendb/ravendb

Using this command will skip the Setup Wizard and mount a volume for data persistence.

Warning

Please be aware that running a Docker container with RAVEN_Setup_Mode=None and RAVEN_Security_UnsecuredAccessAllowed=PrivateNetwork will run an Unsecure server.

EULA acceptance

By setting RAVEN_License_Eula_Accepted=true you're accepting our terms & conditions.

Migration

If a Docker image of RavenDB version 5.x or lower is installed on your system and you want to upgrade it to version 6.0 or higher, a short migration process will be required.
Please visit our Docker migration page to learn how to perform this migration.

Configuration

RavenDB can be adjusted using:
  • The settings.json configuration file.

  • Environment Variables, e.g. -

    RAVEN_Setup_Mode=None
    RAVEN_DataDir=RavenData
    RAVEN_Certificate_Path=/config/raven-server.certificate.pfx
  • CLI arguments
    Variables can be passed to a RavenDB Docker image in a CLI arguments line, e.g. -
    ./Raven.Server --Setup.Mode=None

FAQ

Q: I use compose or run an automated installation. How do I disable the setup wizard?

A: Set the Setup.Mode configuration option to Nonem like so:

RAVEN_ARGS='--Setup.Mode=None'

Q: I want to try RavenDB on my local / development machine. How do I run an unsecure server?

A: Set the env variables like so:

RAVEN_ARGS='--Setup.Mode=None'
RAVEN_Security_UnsecuredAccessAllowed='PrivateNetwork'

Q: How can I pass command line arguments?

A: By modifying RAVEN_ARGS environment variables, that will be passed on as a CLI arguments line.


Q: Can I see RavenDB logs in container logs?

A: To get logs available when running the docker logs command, you need to enable this option in RavenDB server.
E.g., set the environment variables as shown below to enable logging to the console.

RAVEN_ARGS='--log-to-console'

Please note that this behavior may have performance implications.
To modify the logging level use the RAVEN_Logs_Mode variable.

Additional information regarding logging configuration is available here.


Q: How do I use a custom config file?

A: Mount it as a Docker volume, and use the --config-path PATH_TO_CONFIG command line argument to use a settings file from outside of the server directory.
Alternatively, you can pass your custom settings.json content via the RAVENDB_SETTINGS environment variable.


Q: How can I manage server running in a container?

A: Except for the RavenDB Studio, which can be accessed from the browser, you can connect the RavenDB administration console using the rvn utility as follows:

> docker exec -it CONTAINER_ID /opt/RavenDB/Server/rvn admin-channel
Will try to connect to discovered Raven.Server process : 8...

       _____                       _____  ____
      |  __ \                     |  __ \|  _ \
      | |__) |__ ___   _____ _ __ | |  | | |_) |
      |  _  // _` \ \ / / _ \ '_ \| |  | |  _ <
      | | \ \ (_| |\ V /  __/ | | | |__| | |_) |
      |_|  \_\__,_| \_/ \___|_| |_|_____/|____/


      Safe by default, optimized for efficiency

 Build 60, Version 6.0, SemVer 6.0.0-custom-60, Commit 10ed5a8
 PID 8232, 64 bits, 8 Cores, Phys Mem 23.866 GBytes, Arch: X64
 Source Code (git repo): https://github.com/ravendb/ravendb
 Built with love by Hibernating Rhinos and awesome contributors!
+---------------------------------------------------------------+
Connected to RavenDB Console through named pipe connection...

ravendb> help
...

Additional information about running RavenDB as a console is available here.