Skip to main content

License under Docker

Prerequisites

  • Docker images of RavenDB versions up to 5.x require no special permissions since they are installed and handled by the root user, that is inherently allowed to access any RavenDB property, including its license.
  • Docker images of RavenDB 6.0 and later are executed by a regular user for security reasons, requiring that this user would be explicitly permitted to access RavenDB properties, including any mounted license folder.
  • Read more about this in the dedicated migration page.

Licensing a RavenDB docker image

Find below a few methods to license a RavenDB server that runs in a Docker container.

Passing a Path to the License File via CLI

Store the license in a folder that can be accessed by the host machine that runs Docker.
RavenDB, within Docker, will have no direct access to the license.
Allow RavenDB to access the license by mounting the license folder when you run RavenDB using Docker's CLI.

  • From Docker's CLI, use this syntax:

    docker run -v <host_dir>:<container_dir> -e <env.var>

    The -v option points at the host directory.
    The -e option sets the Docker RAVEN_License_Path environment variable with the license.

  • Example:

    docker run -v "C:\\docker-license\\config:/ravendb/license" -e RAVEN_License_Path=/ravendb/license/license.json  

When RavenDB is executed this way, the license folder will be mounted and the environment variable set with the license.
RavenDB will fetch the license from the environment variable the first time it accesses a database.

To verify that the server is licensed, run it as shown above, create a new database or access an existing one, and then open the About view.

About view: Licensed ServerAbout view: Licensed Server

Passing a License via settings.json

Provide the license as a property of the settings.json configuration file in one of the following ways.

  • Add the full license text to settings.json as the value of the "License" key, as explained here.
    Mount settings.json as explained above, using the location of settings.json instead of the location of a license file.
  • Or, add the license path to settings.json as the value of the “License.Path” key and mount the license directory.

Setting a RAVEN_License Environment Variable

The full license text can also be added as a docker RAVEN_License environment variable when the server is executed.

  • Special characters must be escaped.
  • Each line of the license key is provided as a single string.
  • Example:
    docker run -e 'RAVEN_License={ 
    \"Id\": \"4b167357-42f5-48a8-bef5-29ca557ef0ce\",
    \"Name\": \"asdf\", \"Keys\": [
    \"6aoht+NE3zvJidqIspOIa/5N1\",
    \"320e9G95NFsNwbKkNfl3R/qO9\",
    \"IHuEgp9OHVjxwV9ekur/L/FiF\",
    \"RCfFywsNR0O2ghqZo6N0r4onp\",
    \"fGNula2WJv0iz5Tq+xt99/A6t\",
    \"oHfaSXrNOdgilfCqLkoyFI9E8\",
    \"MHMmcIfBoQelf/qZKOpE5ABYE\",
    \"DNi4wBSYoSQMmKywtLL8wJzEy\",
    \"MzQVFjc4OTo7PD0+nwIfIJ8CI\",
    \"CCfAiEgnwIjIJ8CJCMfAiUgnw\",
    \"ImIJ8CJyCfAiggnwIpI12CKiC\",
    \"fAisgwvJsIJ8CLSCfAi4gnwIv\",
    \"IJ8CMCCfAzZAAUMkRAlio9g=\"]}'

Licensing RavenDB under Linux

To license RavenDB under Linux, pass a license file rather than a directory.

Example:

docker run -v "/home/ubuntu/ravendb-docker-license/license.json:/ravendb/license" -e RAVEN_License_Path=/ravendb/license
In this article