Sign inSign up

axoniq/axonserver-enterprise

By axoniq

Updated over 2 years ago

A multi-platform container image for Axon Server EE.

Image
1

100K+

axoniq/axonserver-enterprise repository overview

Axon Server Enterprise Edition

From version 2023.1.0 there is a single image replacing the Standard Edition and Enterprise Edition images. This image can be found at https://hub.docker.com/r/axoniq/axonserver,

For the release notes, check the Axon Reference guide (https://docs.axoniq.io/reference-guide/release-notes/rn-axon-server).

Important Notice:

The Axon Server Enterprise Edition images provided here are for development and trial usage. They are not formally supported, production-hardened images, and include a shell for inspection and/or debugging.

Supported tags
  • Eclipse Temurin based, multi-platform images:

    Note that these images are all tagged with "-dev" due to the presence of a bash shell. Axon Server EE is installed in "/axonserver" and the exported volumes are "/axonserver/data" (ControlDB and PID file), "/axonserver/events" (events and snapshots), "/axonserver/log" (replication logs), "/axonserver/config" (for an optional extra "axonserver.properties" file), "/axonserver/exts" (for extensions), and "/axonserver/plugins" (for the plugin cache).

    • 2023.0.1-dev, 2023.0.1-jdk-11-dev, latest-dev, latest-jdk-11-dev

      These run Axon Server EE as user "root" using a Java 11 runtime.

    • 2023.0.1-dev-nonroot, 2023.0.1-jdk-11-dev-nonroot, latest-dev-nonroot, latest-jdk-11-dev-nonroot

      These run Axon Server EE as user "axonserver" using a Java 11 runtime.

    • 2023.0.1-jdk-17-dev, latest-jdk-17-dev

      These run Axon Server EE as user "root" using a Java 17 runtime.

    • 2023.0.1-jdk-17-dev-nonroot, latest-jdk-17-dev-nonroot

      These run Axon Server EE as user "axonserver" using a Java 17 runtime.

    • 2023.0.0-dev, 2023.0.0-jdk-11-dev

    • 2023.0.0-dev-nonroot, 2023.0.0-jdk-11-dev-nonroot

    • 2023.0.0-jdk-17-dev

    • 2023.0.0-jdk-17-dev-nonroot

    • 4.6.13-dev, 4.6.13-jdk-11-dev

    • 4.6.13-dev-nonroot, 4.6.13-jdk-11-dev-nonroot

    • 4.6.13-jdk-8-dev

    • 4.6.13-jdk-8-dev-nonroot

    • 4.6.13-jdk-17-dev

    • 4.6.13-jdk-17-dev-nonroot

    • 4.6.12-dev, 4.6.12-jdk-11-dev

    • 4.6.12-dev-nonroot, 4.6.12-jdk-11-dev-nonroot

    • 4.6.12-jdk-8-dev

    • 4.6.12-jdk-8-dev-nonroot

    • 4.6.12-jdk-17-dev

    • 4.6.12-jdk-17-dev-nonroot

    • 4.6.11-dev, 4.6.11-jdk-11-dev

    • 4.6.11-dev-nonroot, 4.6.11-jdk-11-dev-nonroot

    • 4.6.11-jdk-8-dev

    • 4.6.11-jdk-8-dev-nonroot

    • 4.6.11-jdk-17-dev

    • 4.6.11-jdk-17-dev-nonroot

    • 4.6.10-dev, 4.6.10-jdk-11-dev

    • 4.6.10-dev-nonroot, 4.6.10-jdk-11-dev-nonroot

    • 4.6.10-jdk-8-dev

    • 4.6.10-jdk-8-dev-nonroot

    • 4.6.10-jdk-17-dev

    • 4.6.10-jdk-17-dev-nonroot

    • 4.6.9-dev, 4.6.9-jdk-11-dev

    • 4.6.9-dev-nonroot, 4.6.9-jdk-11-dev-nonroot

    • 4.6.9-jdk-8-dev

    • 4.6.9-jdk-8-dev-nonroot

    • 4.6.9-jdk-17-dev

    • 4.6.9-jdk-17-dev-nonroot

    • 4.6.8-dev, 4.6.8-jdk-11-dev

    • 4.6.8-dev-nonroot, 4.6.8-jdk-11-dev-nonroot

    • 4.6.8-jdk-8-dev

    • 4.6.8-jdk-8-dev-nonroot

    • 4.6.8-jdk-17-dev

    • 4.6.8-jdk-17-dev-nonroot

    • 4.6.7-dev, 4.6.7-jdk-11-dev

    • 4.6.7-dev-nonroot, 4.6.7-jdk-11-dev-nonroot

    • 4.6.7-jdk-8-dev

    • 4.6.7-jdk-8-dev-nonroot

    • 4.6.7-jdk-17-dev

    • 4.6.7-jdk-17-dev-nonroot

    • 4.6.6-dev, 4.6.6-jdk-11-dev

    • 4.6.6-dev-nonroot, 4.6.6-jdk-11-dev-nonroot

    • 4.6.6-jdk-8-dev

    • 4.6.6-jdk-8-dev-nonroot

    • 4.6.6-jdk-17-dev

    • 4.6.6-jdk-17-dev-nonroot

    • 4.6.5-dev, 4.6.5-jdk-11-dev

    • 4.6.5-dev-nonroot, 4.6.5-jdk-11-dev-nonroot

    • 4.6.5-jdk-8-dev

    • 4.6.5-jdk-8-dev-nonroot

    • 4.6.5-jdk-17-dev

    • 4.6.5-jdk-17-dev-nonroot

    • 4.6.4-dev, 4.6.4-jdk-11-dev

    • 4.6.4-dev-nonroot, 4.6.4-jdk-11-dev-nonroot

    • 4.6.4-jdk-8-dev

    • 4.6.4-jdk-8-dev-nonroot

    • 4.6.4-jdk-17-dev

    • 4.6.4-jdk-17-dev-nonroot

    • 4.6.3-dev, 4.6.3-jdk-11-dev

    • 4.6.3-dev-nonroot, 4.6.3-jdk-11-dev-nonroot

    • 4.6.3-jdk-8-dev

    • 4.6.3-jdk-8-dev-nonroot

    • 4.6.3-jdk-17-dev

    • 4.6.3-jdk-17-dev-nonroot

    • 4.6.2-dev, 4.6.2-jdk-11-dev

    • 4.6.2-dev-nonroot, 4.6.2-jdk-11-dev-nonroot

    • 4.6.2-jdk-8-dev

    • 4.6.2-jdk-8-dev-nonroot

    • 4.6.2-jdk-17-dev

    • 4.6.2-jdk-17-dev-nonroot

    • 4.6.1-dev, 4.6.1-jdk-11-dev

    • 4.6.1-dev-nonroot, 4.6.1-jdk-11-dev-nonroot

    • 4.6.1-jdk-8-dev

    • 4.6.1-jdk-8-dev-nonroot

    • 4.6.1-jdk-17-dev

    • 4.6.1-jdk-17-dev-nonroot

    • 4.6.0-dev, 4.6.0-jdk-11-dev

    • 4.6.0-dev-nonroot, 4.6.0-jdk-11-dev-nonroot

    • 4.6.0-jdk-8-dev

    • 4.6.0-jdk-8-dev-nonroot

    • 4.6.0-jdk-17-dev

    • 4.6.0-jdk-17-dev-nonroot

    • 4.5.20-dev, 4.5.20-jdk-11-dev

    • 4.5.20-dev-nonroot, 4.5.20-jdk-11-dev-nonroot

    • 4.5.20-jdk-8-dev

    • 4.5.20-jdk-8-dev-nonroot

    • 4.5.20-jdk-17-dev

    • 4.5.20-jdk-17-dev-nonroot

    • 4.5.21-dev, 4.5.21-jdk-11-dev

    • 4.5.21-dev-nonroot, 4.5.21-jdk-11-dev-nonroot

    • 4.5.21-jdk-8-dev

    • 4.5.21-jdk-8-dev-nonroot

    • 4.5.21-jdk-17-dev

    • 4.5.21-jdk-17-dev-nonroot

    • 4.5.19-dev, 4.5.19-jdk-11-dev

    • 4.5.19-dev-nonroot, 4.5.19-jdk-11-dev-nonroot

    • 4.5.19-jdk-8-dev

    • 4.5.19-jdk-8-dev-nonroot

    • 4.5.19-jdk-17-dev

    • 4.5.19-jdk-17-dev-nonroot

    • 4.5.18-dev, 4.5.18-jdk-11-dev

    • 4.5.18-dev-nonroot, 4.5.18-jdk-11-dev-nonroot

    • 4.5.18-jdk-8-dev

    • 4.5.18-jdk-8-dev-nonroot

    • 4.5.18-jdk-17-dev

    • 4.5.18-jdk-17-dev-nonroot

    • 4.5.17-dev, 4.5.17-jdk-11-dev

    • 4.5.17-dev-nonroot, 4.5.17-jdk-11-dev-nonroot

    • 4.5.17-jdk-8-dev

    • 4.5.17-jdk-8-dev-nonroot

    • 4.5.17-jdk-17-dev

    • 4.5.17-jdk-17-dev-nonroot

    • 4.5.16-dev, 4.5.16-jdk-11-dev

    • 4.5.16-dev-nonroot, 4.5.16-jdk-11-dev-nonroot

    • 4.5.16-jdk-8-dev

    • 4.5.16-jdk-8-dev-nonroot

    • 4.5.16-jdk-17-dev

    • 4.5.16-jdk-17-dev-nonroot

    • 4.5.15-dev, 4.5.15-jdk-11-dev

    • 4.5.15-dev-nonroot, 4.5.15-jdk-11-dev-nonroot

    • 4.5.15-jdk-8-dev

    • 4.5.15-jdk-8-dev-nonroot

    • 4.5.15-jdk-17-dev

    • 4.5.15-jdk-17-dev-nonroot

    • 4.5.14-dev, 4.5.14-jdk-11-dev

    • 4.5.14-dev-nonroot, 4.5.14-jdk-11-dev-nonroot

    • 4.5.14-jdk-8-dev

    • 4.5.14-jdk-8-dev-nonroot

    • 4.5.14-jdk-17-dev

    • 4.5.14-jdk-17-dev-nonroot

    • 4.5.13-dev, 4.5.13-jdk-11-dev

    • 4.5.13-dev-nonroot, 4.5.13-jdk-11-dev-nonroot

    • 4.5.13-jdk-8-dev

    • 4.5.13-jdk-8-dev-nonroot

    • 4.5.13-jdk-17-dev

    • 4.5.13-jdk-17-dev-nonroot

    • 4.5.12-dev, 4.5.12-jdk-11-dev

    • 4.5.12-dev-nonroot, 4.5.12-jdk-11-dev-nonroot

    • 4.5.12-jdk-8-dev

    • 4.5.12-jdk-8-dev-nonroot

    • 4.5.12-jdk-17-dev

    • 4.5.12-jdk-17-dev-nonroot

    • 4.5.11-dev, 4.5.11-jdk-11-dev

    • 4.5.11-dev-nonroot, 4.5.11-jdk-11-dev-nonroot

    • 4.5.11-jdk-8-dev

    • 4.5.11-jdk-8-dev-nonroot

    • 4.5.11-jdk-17-dev

    • 4.5.11-jdk-17-dev-nonroot

  • distroless-java 11 based (gcr.io/distroless/java:11):

    • 4.5.9-dev
    • 4.5.9-dev-nonroot
    • 4.5.8-dev
    • 4.5.8-dev-nonroot
    • 4.5.7-dev
    • 4.5.7-dev-nonroot
    • 4.5.6.1-dev
    • 4.5.6.1-dev-nonroot
    • 4.5.5-dev
    • 4.5.5-dev-nonroot
    • 4.5.3-dev
    • 4.5.3-dev-nonroot
Quick Reference
  • License:

    Axon Server Enterprise Edition is a commercially licensed product. Unless you provide it with a valid license file, it will restrict itself to the Axon Server Standard Edition functionality. Please visit the AxonIQ website for more information and sales inquiries.

  • Where to get information:

  • Maintained by: The AxonIQ team

Release Notes

For release notes please visit the Axon Reference Manual.

Running Axon Server

To run Axon Server in Docker you can use the image provided here on Docker Hub.

For example, to start Axon Server EE version 4.5.3, running as user "root", use:

$ docker run -d --name axonserver-ee -p 8024:8024 -p 8124:8124 axoniq/axonserver-enterprise:4.5.3-dev
...some container id...

For more information on how to run Axon Server in a Docker/Kubernetes environment check the reference guide. There are also many example scripts and deployment files provided on GitHub, and more explanations in a series of blog posts. (Part 1, Part 2, Part 3, and Part 4) Parts 2 and 4 are specifically about running Axon Server in Docker and Kubernetes, but the others provide additional background on running it locally (Part 1) and in a VM. (Part 3)

Note about the License file

When you run Axon Server, it will expect the license file in the "config" directory, as a file name "axoniq.license". If the file is not found, it will start up in Standard Edition mode, and you can use the UI ("Settings" tab) to upload a license file. Axon Server expects to be able to write the file to that same location.

Exported Volumes

Axon Server has a number of volumes that you can mount to make the data persist across container runs or to access its files:

  • "/axonserver/config"

    You can use this directory to place a file named "axonserver.properties", containing configuration settings. See the Reference Guide for a full list and detailed explanations. This directory is also where (by default) the license file is stored.

  • "/axonserver/data"

    This directory is (by default) where Axon Server places the ControlDB, which is used to store cluster configuration details.

  • "/axonserver/events"

    This is where Events and Snapshots are stored.

  • "/axonserver/log"

    This is where the Replication Logs are stored, which are a binary log of data changes.

  • "/axonserver/exts"

    This directory is used for Axon Server extensions, such as the OAuth2 and LDAP integration packages.

  • "/axonserver/plugins"

    This is where plugin bundles will be stored.

Note Concerning the "nonroot" Image

Docker images are by default run as user "root", which may present a security risk in some situations. The "nonroot" image is provided as a secure alternative and may actually be required in some environments such as OpenShift. Please be aware that just using the "nonroot" image is not enough in most situations, as container runtimes do not always ensure that volumes are actually writable for this user. The "nonroot" images run Axon Server under a user named "axonserver", with UserId and GroupId set to "1001". You should make sure that this UserId has write access to the volumes.

Note that for Kubernetes you can use this snippet in your deployment file:

...
    spec:
      securityContext:
        runAsUser: 1001
        fsGroup: 1001
      containers:
      - name: axonserver
        image: axoniq/axonserver-enterprise:4.5.3-dev-nonroot
...

The full example can be found in the Running Axon Server repository on GitHub.

Configuring Axon Server

Axon Server uses sensible defaults for all of its settings, so it will actually run fine without any further configuration. However, if you want to make some changes, you can use a properties file as mentioned above, or use environment variables for individual properties. Below are the most common options.

Default Settings

The Axon Server images have a property file with the following default settings:

axoniq.axonserver.event.storage=./events
axoniq.axonserver.snapshot.storage=./events
axoniq.axonserver.replication.log-storage-folder=./log

axoniq.axonserver.enterprise.licenseDirectory=./config

axoniq.axonserver.controldb-path=./data
axoniq.axonserver.pid-file-location=./data

logging.file=./data/axonserver.log
logging.file.max-history=10
logging.file.max-size=10MB

This property file is stored as "/axonserver/axonserver.properties". You can override any of these settings by placing a file with that same name in the "/axonserver/config" volume, or by specifying individual options as environment variables.

Common Environment Variables for configuring Axon Server
  • JAVA_TOOL_OPTIONS

    This is used to pass JVM options. Default is to use it for heap size setting, with "-Xmx512m".

  • AXONIQ_AXONSERVER_NAME

    This is the name the Axon Server uses for itself.

  • AXONIQ_AXONSERVER_HOSTNAME

    This is the hostname Axon Server communicates to the client as its contact point. Default is "localhost", because Docker generates a random name that is not resolvable outside of the container.

  • AXONIQ_AXONSERVER_DOMAIN

    This is the domain Axon Server can suffix the hostname with.

  • SERVER_PORT

    This is the port Axon Server uses for its Web GUI and REST API.

  • AXONIQ_AXONSERVER_PORT

    This is the gRPC port used by clients to exchange data with the server.

  • AXONIQ_AXONSERVER_ACCESSCONTROL_ENABLED and AXONIQ_AXONSERVER_ACCESSCONTROL_TOKEN

    Setting enabled to true will enable access control. The clients need to pass the specified token with each request.

  • AXONIQ_AXONSERVER_EVENT_STORAGE

    This is the directory used for storing the Events.

  • AXONIQ_AXONSERVER_SNAPSHOT_STORAGE

    This is the directory used for storing the replication log.

  • AXONIQ_AXONSERVER_CONTROLDB_PATH

    The directory where Axon Server keeps its internal DB.

The Axon Server HTTP server

Axon Server provides two servers, one serving HTTP requests, the other gRPC. By default, these use ports 8024 and 8124 respectively, but you can change these in the settings.

The HTTP server has in its root context a management Web GUI, a health indicator is available at /actuator/health, and the REST API at /v1. The API's Swagger endpoint is finally available at /swagger-ui/ and gives the documentation on the REST API.

A third port, by default at 8224 and also using gRPC, is used to communicate between instances of Axon Server EE in a cluster.

Tag summary

Content type

Image

Digest

sha256:0e37917d3

Size

281.7 MB

Last updated

over 2 years ago

docker pull axoniq/axonserver-enterprise:4.6.14-jdk-17-dev-nonroot