Skip to content

RavenDB

Not available until the next release main

Introduction

The Testcontainers module for RavenDB, an open-source NoSQL document database with multi-document ACID transactions. It is designed for web-scale, high-performance applications and provides a built-in Studio web UI for management and exploration.

Adding this module to your project dependencies

Please run the following command to add the RavenDB module to your Go dependencies:

go get github.com/testcontainers/testcontainers-go/modules/ravendb

Usage example

ctx := context.Background()

ravendbContainer, err := ravendb.Run(ctx, "ravendb/ravendb:6.0-ubuntu-latest")
defer func() {
    if err := testcontainers.TerminateContainer(ravendbContainer); err != nil {
        log.Printf("failed to terminate container: %s", err)
    }
}()
if err != nil {
    log.Printf("failed to start container: %s", err)
    return
}

Module Reference

Run function

  • Not available until the next release main

The RavenDB module exposes one entrypoint function to create the RavenDB container, and this function receives three parameters:

func Run(ctx context.Context, img string, opts ...testcontainers.ContainerCustomizer) (*Container, error)
  • context.Context, the Go context.
  • string, the Docker image to use.
  • testcontainers.ContainerCustomizer, a variadic argument for passing options.

Image

Use the second argument in the Run function to set a valid Docker image. In example: Run(context.Background(), "ravendb/ravendb:6.0-ubuntu-latest").

The module automatically sets the required environment variables for running RavenDB in unsecured development mode:

  • RAVEN_Setup_Mode=None
  • RAVEN_License_Eula_Accepted=true
  • RAVEN_Security_UnsecuredAccessAllowed=PublicNetwork
  • RAVEN_Logs_Mode=None

Container Options

When starting the RavenDB container, you can pass options in a variadic way to configure it.

The following options are exposed by the testcontainers package.

Basic Options

Lifecycle Options

Files & Mounts Options

Build Options

Logging Options

Image Options

Networking Options

Advanced Options

Experimental Options

Container Methods

The RavenDB container exposes the following methods:

ManagementURL

  • Not available until the next release main

The ManagementURL method returns the URL of the RavenDB management interface (Studio UI and REST API). It returns a string with the format http://<host>:<port>.

It can be used to configure a RavenDB client or to access the Studio UI in a browser, e.g.:

ctx := context.Background()

ravendbContainer, err := ravendb.Run(ctx, "ravendb/ravendb:6.0-ubuntu-latest")
defer func() {
    if err := testcontainers.TerminateContainer(ravendbContainer); err != nil {
        log.Printf("failed to terminate container: %s", err)
    }
}()
if err != nil {
    log.Printf("failed to start container: %s", err)
    return
}

managementURL, err := ravendbContainer.ManagementURL(ctx)
if err != nil {
    log.Printf("failed to get management URL: %s", err)
    return
}

isHTTP := len(managementURL) > 7 && managementURL[:7] == "http://"
fmt.Println(isHTTP)

// Output:
// true

TCPEndpoint

  • Not available until the next release main

The TCPEndpoint method returns the host:port endpoint for RavenDB's TCP port (38888), used for subscriptions and cluster/replication communication.