Public | Automated Build

Last pushed: 4 days ago
Short Description
Short description is empty for this repo.
Full Description

Infinispan server Docker image

Adjusting memory

Infinispan Docker image automatically scales Java heap (Xmx and Xms) to memory limitations defined
CGroups. The default behavior sets it to 50% of the container memory. This is a safe minimum that allows to
use Infinispan with different configuration.

This setting can be easily overridden by specifying JAVA_OPTIONS environmental variable with Xmx setting.
In that case the automatic scaling scripts will use value specified by the user.

Configuring authentication

To be able to connect to any of the Infinispan server Docker images, authentication is necessary.
The easiest way to create a new user (with specified password) before starting the server is to specify APP_USER
and APP_PASS environment variables or pass -au (for user name) and -ap (for password) switches.

Optionally, APP_ROLES environment variable (or -ar switch) can be passed in which provides specific security roles
to be associated with the user. The value of this environment variable is expected to be a comma-separated
list of roles for the user.

The management console exposed by the Infinispan server Docker images also requires authentication.
In this case, to be able to access the console, MGMT_USER and MGMT_PASS environment variables
(or -mu and -mp equivalents) need to be provided. Even if not accessing the console,
these environment properties are required if creating a cluster in the domain mode.

If no application and/or management user and password is specified, the image will generate a new one. A newly
generated user/password pair will be displayed on the console before the starts up.

Here are some examples on how environment variables can be provided depending on the chosen method to start the image.

Docker run example with environmental variables:

docker run ... -e "APP_USER=user" -e "APP_PASS=changeme" jboss/infinispan-server 

Docker run example with switches:

docker run ... jboss/infinispan-server -au "user" -ap "changeme"

Dockerfile example:

ENV APP_USER user
ENV APP_PASS changeme

Kubernetes yaml example:

spec:
  containers:
  - args:
    image: jboss/infinispan-server:...
    ...
    env:
    - name: APP_USER
      value: "user"
    - name: APP_PASS
      value: "changeme"

OpenShift client example:

oc new-app ... -e "APP_USER=user" -e "APP_PASS=changeme" ...

Finally, it's possible to add more fine grained credentials by invoking add-user command once the image has started up:

docker exec -it $(docker ps -l -q) /opt/jboss/infinispan-server/bin/add-user.sh

Starting in clustered mode

Run one or more:

docker run -it jboss/infinispan-server

and the containers should be able to form a cluster.

Choosing the JGroups stack

To run with the tcp stack instead of udp:

docker run -it jboss/infinispan-server -Djboss.default.jgroups.stack=tcp

The run with the tcp-gossip stack, specifying the router location:

docker run -it jboss/infinispan-server -Djboss.default.jgroups.stack=tcp-gossip -Djgroups.gossip.initial_hosts=172.17.0.2[12001]

Integrate with jboss/jgroups-gossip

If the gossip router comes from jboss/jgroups-gossip, it's important to align the versions with the Infinispan Server.

So for Infinispan 9.1.0.Final, the correct way of starting the gossip container is:

docker run -p 12001:12001 -e "LogLevel=DEBUG" jboss/jgroups-gossip:4.0.4.Final

Starting in standalone mode

docker run -it jboss/infinispan-server standalone

As it happens with clustered mode, it is possible to specify command line parameters to the server.

Examples:

To avoid exposing the management interface:

docker run -it jboss/infinispan-server standalone -Djboss.bind.address.management=127.0.0.1

To print the version and exit:

docker run -it jboss/infinispan-server standalone -v

Please consult the Infinispan user docs to find out about the available options.

Starting with a custom configuration

The first param to the container is the name of the desired configuration. For example, to start with the cloud.xml configuration:

docker run -it jboss/infinispan-server cloud -Djboss.default.jgroups.stack=google -Djgroups.google.bucket=... -Djgroups.google.access_key=... 

Running domain mode

Domain mode is composed of a lightweight managing process that does not hold data called domain controller plus one or more
host controllers co-located with the Infinispan Server nodes. To run the domain controller:

docker run --name=dc -it jboss/infinispan-server domain-controller -mu user -mp password

And then each host controller can be started as:

docker run --link dc:dc -it jboss/infinispan-server host-controller -mu user -mp password

Specifying management user and password is required for operating the domain mode.

Acessing the Server Management Console

The Server Management Console listens on the domain controller on port 9990.
To be able to access the console, credentials need to be provided (see above).

Source to image (S2I)

Infinispan Docker image uses S2I to supply configuration XML file to the server. The scripts copy content of user directory
into /opt/jboss/infinispan-server/standalone/configuration. The destination directory can be changed using CONFIGURATION_PATH
environmental variable.

The easiest way to run Infinispan with custom configuration inside OpenShift is to invoke the following command:

oc new-app jboss/infinispan-server~https://github.com/<username or organization>/<repository with xml in its root>.git

There are special parameters to specify the context directory, branch or SHA1 of the repository. For more information
please refer to OpenShift S2I manual.

Providing clustered.xml file is the simplest way to start (since this is the default configuration triggered by entrypoint scripts).
However it is advised to use custom file names and run them using using container args.

Extending the image

FROM jboss/infinispan-server
# Do your stuff here

Then you can build the image:

docker build .

Source

The source is available on GitHub.

Issues

Please report any issues or file RFEs on GitHub.

Docker Pull Command
Owner
jboss
Source Repository