Code Monkey home page Code Monkey logo

confluence's Introduction

Dockerized Atlassian Confluence

"One place for all your team's work - Spend less time hunting things down and more time making things happen. Organize your work, create documents, and discuss everything in one place." - [Source]

Supported Tags And Respective Dockerfile Links

Product Version Tags Dockerfile
Confluence 7.11.6 7.11.6, latest Dockerfile

Related Images

You may also like:

Make It Short

$ docker run -d -p 80:8090 --name confluence teamatldocker/confluence

Setup

  1. Start the database container
  2. Start Confluence
  3. Setup Confluence

First start the database server:

Note: Change Password!

$ docker network create confluencenet
$ docker run --name postgres -d \
    --network confluencenet \
    -e 'POSTGRES_USER=jira' \
    -e 'POSTGRES_PASSWORD=jellyfish' \
    -e 'POSTGRES_ENCODING=UTF8' \
    -e 'POSTGRES_COLLATE=C' \
    -e 'POSTGRES_COLLATE_TYPE=C' \
    postgres

This is the blacklabelops postgres image.

Secondly start Confluence with a link to postgres:

$ docker run -d --name confluence \
	  --network confluencenet \
	  -p 80:8090 teamatldocker/confluence

Start the Confluence and link it to the postgresql instance.

Thirdly, configure your Confluence yourself and fill it with a test license.

  1. Choose Production Installation because we have a postgres!
  2. Enter license information
  3. In Choose a Database Configuration choose PostgeSQL and press External Database
  4. In Configure Database press Direct JDBC
  5. In Configure Database fill out the form:
  • Driver Class Name: org.postgresql.Driver
  • Database URL: jdbc:postgresql://postgres:5432/confluencedb
  • User Name: confluencedb
  • Password: jellyfish

Note: Change Password!

Demo Database Setup

Note: It's not recommended to use a default initialized database for Confluence in production! The default databases are all using a not recommended database configuration! Please use this for demo purposes only!

This is a demo "by foot" using the docker cli. In this example we setup an empty PostgreSQL container. Then we connect and configure the Confluence accordingly. Afterwards the Confluence container can always resume on the database.

Steps:

  • Start Database container
  • Start Confluence

PostgreSQL

Let's take an PostgreSQL Docker Image and set it up:

Postgres Official Docker Image:

$ docker network create confluencenet
$ docker run --name postgres -d \
    --network confluencenet \
    -e 'POSTGRES_DB=confluencedb' \
    -e 'POSTGRES_USER=confluencedb' \
    -e 'POSTGRES_PASSWORD=jellyfish' \
    postgres:9.4

This is the official postgres image.

Postgres Community Docker Image:

$ docker network create confluencenet
$ docker run --name postgres -d \
    --network confluencenet \
    -e 'DB_USER=confluencedb' \
    -e 'DB_PASS=jellyfish' \
    -e 'DB_NAME=confluencedb' \
    sameersbn/postgresql:9.4-12

This is the sameersbn/postgresql docker container I tested.

Now start the Confluence container and let it use the container. On first startup you have to configure your Confluence yourself and fill it with a test license.

  1. Choose Production Installation because we have a postgres!
  2. Enter license information
  3. In Choose a Database Configuration choose PostgeSQL and press External Database
  4. In Configure Database press Direct JDBC
  5. In Configure Database fill out the form:
  • Driver Class Name: org.postgresql.Driver
  • Database URL: jdbc:postgresql://postgres:5432/confluencedb
  • User Name: confluencedb
  • Password: jellyfish
$ docker run -d --name confluence \
	  --network confluencenet \
	  -p 80:8090 teamatldocker/confluence

Start the Confluence and link it to the postgresql instance.

MySQL

Let's take an MySQL container and set it up:

MySQL Official Docker Image:

$ docker network create confluencenet
$ docker run -d --name mysql \
    --network confluencenet \
    -e 'MYSQL_ROOT_PASSWORD=verybigsecretrootpassword' \
    -e 'MYSQL_DATABASE=confluencedb' \
    -e 'MYSQL_USER=confluencedb' \
    -e 'MYSQL_PASSWORD=jellyfish' \
    mysql:5.6

This is the mysql docker container I tested.

MySQL Community Docker Image:

$ docker network create confluencenet
$ docker run -d --name mysql \
    --network confluencenet \
    -e 'ON_CREATE_DB=confluencedb' \
    -e 'MYSQL_USER=confluencedb' \
    -e 'MYSQL_PASS=jellyfish' \
    tutum/mysql:5.6

This is the tutum/mysql docker container I tested.

Now start the Confluence container and let it use the container. On first startup you have to configure your Confluence yourself and fill it with a test license.

  1. Choose Production Installation because we have a mysql!
  2. Enter license information
  3. In Choose a Database Configuration choose MySQL and press External Database
  4. In Configure Database press Direct JDBC
  5. In Configure Database fill out the form:
  • Driver Class Name: com.mysql.jdbc.Driver
  • Database URL: jdbc:mysql://mysql/confluencedb?sessionVariables=storage_engine%3DInnoDB&useUnicode=true&characterEncoding=utf8
  • User Name: confluencedb
  • Password: jellyfish
$ docker run -d --name confluence \
	  --network confluencenet \
	  -p 80:8090 teamatldocker/confluence

Start Confluence

Confluence will be available at http://yourdockerhost

Database Wait Feature

The confluence container can wait for the database container to start up. You have to specify the host and port of your database container and Confluence will wait up to one minute for the database.

You can define the waiting parameters with the environment variables:

  • DOCKER_WAIT_HOST: The host to poll. Mandatory!
  • DOCKER_WAIT_PORT: The port to poll Mandatory!
  • DOCKER_WAIT_TIMEOUT: The timeout in seconds. Optional! Default: 60
  • DOCKER_WAIT_INTERVAL: The polling interval in seconds. Optional! Default:5

Example waiting for a postgresql database:

First start the polling container:

$ docker run -d --name confluence \
    -e "DOCKER_WAIT_HOST=your_postgres_host" \
    -e "DOCKER_WAIT_PORT=5432" \
    -p 80:8090 teamatldocker/confluence

Waits at most 60 seconds for the database.

Start the database within 60 seconds:

$ docker run --name postgres -d \
    --network jiranet \
    -v postgresvolume:/var/lib/postgresql \
    -e 'POSTGRES_USER=jira' \
    -e 'POSTGRES_PASSWORD=jellyfish' \
    -e 'POSTGRES_DB=jiradb' \
    -e 'POSTGRES_ENCODING=UTF8' \
    -e 'POSTGRES_COLLATE=C' \
    -e 'POSTGRES_COLLATE_TYPE=C' \
    postgres

Confluence will start after postgres is available!

Confluence Configuration Properties

You can specify configuration entries for the Confluence configuration file confluence.cfg.xml. The entries will be added or updated after the configuration file is available, e.g. after confluence installation. You can specify those entries with enumerated environment variables, they will be executed at each container restart.

Environment Variables:

  • CONFLUENCE_CONFIG_PROPERTY: The name of each configuration property.
  • CONFLUENCE_CONFIG_VALUE: The value for each configuration property.

Example:

  • Setting property synchrony.btf to true
  • Adding property confluence.webapp.context.path to /confluence
$ docker run -d -p 80:8090 \
    --name confluence \
    -e "CONFLUENCE_CONFIG_PROPERTY1=synchrony.btf" \
    -e "CONFLUENCE_CONFIG_VALUE1=true" \
    -e "CONFLUENCE_CONFIG_PROPERTY2=confluence.webapp.context.path" \
    -e "CONFLUENCE_CONFIG_VALUE2=/confluence" \
    teamatldocker/confluence

Each environment variable must be enumerated with a postfix number, starting with 1!

Note: When starting Confluence the first time there will be no configuration file confluence.cfg.xml. You will have to restart your container docker restart confluence then your settings will take effect.

Note: Settings will be adjusted at each container restart. There are properties that can be changed inside Confluence. You may not want to overwrite your application setting at each restart.

Proxy Configuration

You can specify your proxy host and proxy port with the environment variables CONFLUENCE_PROXY_NAME and CONFLUENCE_PROXY_PORT. The value will be set inside the Atlassian server.xml at startup!

When you use https then you also have to include the environment variable CONFLUENCE_PROXY_SCHEME.

Example HTTPS:

  • Proxy Name: myhost.example.com
  • Proxy Port: 443
  • Poxy Protocol Scheme: https

Just type:

$ docker run -d --name confluence \
    -e "CONFLUENCE_PROXY_NAME=myhost.example.com" \
    -e "CONFLUENCE_PROXY_PORT=443" \
    -e "CONFLUENCE_PROXY_SCHEME=https" \
    teamatldocker/confluence

Will set the values inside the server.xml in /opt/confluence/conf/server.xml

NGINX HTTP Proxy

This is an example on running Atlassian Confluence behind NGINX with 2 Docker commands!

Prerequisite:

If you want to try the stack on your local compute then setup the following domains in your host settings (Mac/Linux: /etc/hosts):

127.0.1.1	confluence.yourhost.com

Then create a Docker network for communication between Confluence and Nginx:

$ docker network create confluence

First start Confluence:

$ docker run -d --name confluence \
	  --network confluence \
	  -v confluencedata:/var/atlassian/confluence \
	  -e "CONFLUENCE_CONTEXT_PATH=/confluence" \
    -e "CONFLUENCE_PROXY_NAME=confluence.yourhost.com" \
    -e "CONFLUENCE_PROXY_PORT=80" \
    -e "CONFLUENCE_PROXY_SCHEME=http" \
    teamatldocker/confluence

Then start NGINX:

$ docker run -d \
    -p 80:80 \
    --name nginx \
    --network confluence \
    -e "SERVER1SERVER_NAME=confluence.yourhost.com" \
    -e "SERVER1REVERSE_PROXY_LOCATION1=/" \
    -e "SERVER1REVERSE_PROXY_PASS1=http://confluence:8090" \
    -e "SERVER1REVERSE_PROXY_APPLICATION1=confluence" \
    blacklabelops-legacy/nginx

Confluence will be available at http://confluence.yourhost.com.

NGINX HTTPS Proxy

This is an example on running Atlassian Confluence behind NGINX with 2 Docker commands!

Note: This is a self-signed certificate! Trusted certificates by letsencrypt are supported. Documentation can be found here: blacklabelops-legacy/nginx

Prerequisite:

If you want to try the stack on your local compute then setup the following domains in your host settings (Mac/Linux: /etc/hosts):

127.0.1.1	confluence.yourhost.com

Then create a Docker network for communication between Confluence and Nginx:

$ docker network create confluence

First start Confluence:

$ docker run -d --name confluence \
    --network confluence \
    -e "CONFLUENCE_PROXY_NAME=confluence.yourhost.com" \
    -e "CONFLUENCE_PROXY_PORT=443" \
    -e "CONFLUENCE_PROXY_SCHEME=https" \
    teamatldocker/confluence

Then start NGINX:

$ docker run -d \
    -p 443:443 \
    --name nginx \
    --network confluence \
    -e "SERVER1REVERSE_PROXY_LOCATION1=/" \
    -e "SERVER1REVERSE_PROXY_PASS1=http://confluence:8090" \
    -e "SERVER1REVERSE_PROXY_APPLICATION1=confluence" \
    -e "SERVER1CERTIFICATE_DNAME=/CN=CrustyClown/OU=SpringfieldEntertainment/O=confluence.yourhost.com/L=Springfield/C=US" \
    -e "SERVER1HTTPS_ENABLED=true" \
    -e "SERVER1HTTP_ENABLED=false" \
    blacklabelops-legacy/nginx

Confluence will be available at https://confluence.yourhost.com.

Build The Image

The build process can take the following argument:

  • CONFLUENCE_VERSION: The specific Confluence version number.

Examples:

Build image with the default Confluence release:

$ docker build -t teamatldocker/confluence .

Note: Dockerfile must be inside the current directory!

Build image with a specific Confluence release:

$ docker build --build-arg CONFLUENCE_VERSION=6.0.2  -t teamatldocker/confluence .

Note: Dockerfile must be inside the current directory!

Using Docker Compose

The build configuration are specified inside the following area:

jenkins:
  build:
    context: .
    dockerfile: Dockerfile
    args:
      CONFLUENCE_VERSION: 6.0.2

Adjust CONFLUENCE_VERSION for your personal needs.

Build the latest release with docker-compose:

$ docker-compose build

Catalina Webserver Properties

The Catalina webserver properties can be specified using environment variables.

The following environment variables can be used:

  • CATALINA_PARAMETER: The name of the parameter value. You have to use full parameter flag, its name and assignment operator, e.g. -Xms, -XX: or -Dsynchrony.proxy.enabled=.
  • CATALINA_PARAMETER_VALUE: Set the value of the parameter.

Example:

$ docker run -d -p 80:8090 \
  	--name confluence \
  	-v confluencedata:/var/atlassian/confluence \
  	-e "CATALINA_PARAMETER1=-Dsynchrony.proxy.enabled=" \
  	-e "CATALINA_PARAMETER_VALUE1=true" \
    -e "CATALINA_PARAMETER2=-Xms" \
  	-e "CATALINA_PARAMETER_VALUE2=1024m" \
    -e "CATALINA_PARAMETER3=-Xmx" \
  	-e "CATALINA_PARAMETER_VALUE3=1024m" \
  	teamatldocker/confluence

Sets the synchrony proxy and memory settings.

Container Permissions

Simply: You can set user-id and group-id matching to a user and group from your host machine!

Due to security considerations this image is not running in root mode! The Jenkins process user inside the container is confluence and the user's group is confluence. This project offers a simplified mechanism for user- and group-mapping. You can set the uid of the user and gid of the user's group during build time.

The process permissions are relevant when using volumes and mounted folders from the host machine. Confluence need read and write permissions on the host machine. You can set UID and GID of the Confluence's process during build time! UID and GID should resemble credentials from your host machine.

The following build arguments can be used:

  • CONTAINER_UID: Set the user-id of the process. (default: 1000)
  • CONTAINER_GID: Set the group-id of the process. (default: 1000)

Example:

$ docker build --build-arg CONTAINER_UID=2000 --build-arg CONTAINER_GID=2000 -t teamatldocker/confluence .

The container will write and read files with UID 2000 and GID 2000.

Container Language Settings

You can specify the images language and country code. This can help you when Confluence does not display the characters of your language correcty.

The following build arguments can be used:

  • LANG_LANGUAGE: Set the operating systems language code. (default: en)
  • LANG_COUNTRY: Set the operating systems country code. (default: US)

Example:

$ docker build --build-arg LANG_LANGUAGE=de --build-arg LANG_COUNTRY=DE -t teamatldocker/confluence .

Builds image for german language and country code. E.g. when Ö is not displayed correctly inside Confluence.

A Word About Memory Usage

Confluence like any Java application needs a huge amount of memory. If you limit the memory usage by using the Docker --mem option make sure that you give enough memory. Otherwise your Confluence will begin to restart randomly. You should give at least 1-2GB more than the JVM maximum memory setting to your container.

Example:

$ docker run -d -p 80:8090 \
    --name confluence \
    -e "CATALINA_PARAMETER1=-Xms" \
	  -e "CATALINA_PARAMETER_VALUE1=1024m" \
    -e "CATALINA_PARAMETER2=-Xmx" \
	  -e "CATALINA_PARAMETER_VALUE2=2048m" \
    teamatldocker/confluence

CATALINA_OPTS sets webserver startup properties.

Container Metadata

You can inspect image metadata with the following command:

$ docker inspect --format='{{json .Config.Labels}}' teamatldocker/confluence

Displays image metadata, e.g. image build date.

Confluence SSO With Crowd

You enable Single Sign On with Atlassian Crowd. What is crowd?

"Users can come from anywhere: Active Directory, LDAP, Crowd itself, or any mix thereof. Control permissions to all your applications in one place – Atlassian, Subversion, Google Apps, or your own apps." - Atlassian Crowd

This is controlled by the environment variable CONFLUENCE_CROWD_SSO. Possible values:

  • true: Confluence configuration will be set to Crowd SSO authentication class at every restart.
  • false: Confluence configuration will be set to Confluence Authentication class at every restart.
  • ignore (Default): Config will not be touched, current image setting will be taken.

You need to configure an application user between confluence and crowd, see here: Integrating Crowd with Atlassian Confluence

Crowd SSO needs the following environment variables:

CROWD_SSO_APPLICATION_NAME: The application username. CROWD_SSO_APPLICATION_PASSWORD: The application user's password. CROWD_SSO_BASE_URL: The base url of your crowd instance, e.g. https://yourcrowd.yourhost.com/ CROWD_SSO_SESSION_VALIDATION: Timeout for the validation token in minutes.

Example:

$ docker run -d -p 80:8080 -v confluencevolume:/var/atlassian/confluence \
    -e "CONFLUENCE_CROWD_SSO=true" \
    -e "CROWD_SSO_APPLICATION_NAME=confluence_user" \
    -e "CROWD_SSO_APPLICATION_PASSWORD=your_secure_password" \
    -e "CROWD_SSO_BASE_URL=https://yourcrowd.yourhost.com/" \
    -e "CROWD_SSO_SESSION_VALIDATION=10" \
    --name confluence teamatldocker/confluence

SSO will be activated, you will need Crowd in order to authenticate.

Credits

This project is very grateful for code and examples from the repositories:

References

confluence's People

Contributors

ahmadalli avatar chrootlogin avatar cryptster avatar domdorn avatar eugenmayer avatar firefishy avatar jazzbearz avatar jhult avatar philippmuller avatar rwarren avatar steigr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

confluence's Issues

xmlstarlet for Crowd SSO causing mangled seraph-config.xml ?

I'm not sure if it is the mangled seraph-config.xml shown below or something else with the Crowd_enable_SSO flag, but there is something fishy going on.

I'm attempting to simulate an environment with all the Atlassian apps communicating with each other via a "composed" docker-compose and I've ironed out most of the kinks (and will hopefully PR a few changes to your repos soon), but every time I enable Crowd authentication if I also have Crowd SSO turned on for the Confluence container it completely prevents logging in. There is a known issue with Crowd in Confluence preventing local logins from working, but this is actually preventing valid Crowd logins from working either, I end up having to tear down the instance and set it up again. I've also run into issues with the Jira container and Crowd SSO so I've turned it off on those for now, though Bitbucket doesn't seem to mind whether it is on or off.

<security-config
  >
    <parameters
    >
        <init-param
      >
            <param-name
        >login.url</param-name
      >
            <param-value
        >/login.action?os_destination=${originalurl}&amp;permissionViolation=true</param-value
      >
        </init-param
    >
        <init-param
      >
            <param-name
        >link.login.url</param-name
      >
            <param-value
        >/login.action</param-value
      >
        </init-param
    >
        <init-param
      >
            <param-name
        >cookie.encoding</param-name
      >
            <param-value
        >cNf</param-value
      >
        </init-param
    >
        <init-param
      >
            <param-name
        >login.cookie.key</param-name
      >
            <param-value
        >seraph.confluence</param-value
      >
        </init-param
    >

        <!--only basic authentication available-->
        <init-param
      >
            <param-name
        >authentication.type</param-name
      >
            <param-value
        >os_authType</param-value
      >
        </init-param
    >
        
        <!-- Invalidate session on login to prevent session fixation attack -->
         <init-param
      >
            <param-name
        >invalidate.session.on.login</param-name
      >
            <param-value
        >true</param-value
      >
        </init-param
    >
        <!-- Add names for session attributes that must not be copied to a new session when the old one gets invalidated.
          Currently it is empty (i.e. all attributes will be copied). -->
        <init-param
      >
            <param-name
        >invalidate.session.exclude.list</param-name
      >
            <param-value
      />
        </init-param
    >
    </parameters
  >

    <rolemapper
      class="com.atlassian.confluence.security.ConfluenceRoleMapper"
  />
    <controller
      class="com.atlassian.confluence.setup.seraph.ConfluenceSecurityController"
  />

    <!-- Default Confluence authenticator, which uses the configured user management for authentication. -->
    

    <!-- Custom authenticators appear below. To enable one of them, comment out the default authenticator above and uncomment the one below. -->

    <!-- Authenticator with support for Crowd single-sign on (SSO). -->
    <!-- <authenticator class="com.atlassian.confluence.user.ConfluenceCrowdSSOAuthenticator"/> -->

    <!-- Specialised version of the default authenticator which adds authenticated users to confluence-users if they aren't already a member. -->
    

    <services
    >
        <service
        class="com.atlassian.seraph.service.PathService"
      >
            <init-param
        >
                <param-name
          >config.file</param-name
        >
                <param-value
          >seraph-paths.xml</param-value
        >
            </init-param
      >
        </service
    >
    </services
  >

    <elevatedsecurityguard
      class="com.atlassian.confluence.security.seraph.ConfluenceElevatedSecurityGuard"
  />

<authenticator
      class="com.atlassian.confluence.user.ConfluenceCrowdSSOAuthenticator"
  /></security-config
>

Wrong entrypoint behavior for CATALINA_PARAMETER$i

When starting the container with parameters like -e "CATALINA_PARAMETER1=-Xms" -e "CATALINA_PARAMETER_VALUE1=1024m" the entrypoint exits the configuration method in line 140 as $i is set to 1 when entering the method and CATALINA_PARAMETER1 is not empty.

This happens since i is set to 1 in line 84 and never incremented there.

As a workaround dummy CONFLUENCE_CONFIG_PROPERTY1 parameter needs to be set as environment variable to a non empty string. When multiple catalina parameters should be used the same amount of confluence config properties needs to exist in order for the configuration method not to exit prematurely.

Can't manually add connectors to server.xml

The docker container appears to be both parsing (adding line endings to each parameter) and injecting proxyName and proxyPort + scheme into ALL connectors regardless. Which of course breaks many things.

It would be most ideal if it only automatically altered the file (every time you boot up the container) where the connector is the target "main" connector operating on the primary port.

This prevents:

  • Creating application links from Jira to Confluence behind a proxy (fails)
  • Properly defining an AJP connector (dialog popup that base url is different from browsed page -- aka wrong)

And advise on ways to circumvent this in the interim? Thank you!

Allow Synchrony usage behind HTTPS-Proxy

There is some buggy behavior in Confluence regarding Synchrony if run behind an HTTPS-Rerverse-Proxy:
https://jira.atlassian.com/browse/CONF-45264

If configuring the image with environment variable CONFLUENCE_PROXY_SCHEME as https, Confluence will deactivate the internal synchrony proxy (I'm not sure if this is a bug or by design?). This makes using the image behind a Traefik proxy impossible, if you want to use the collaborative editing feature.

So I'm not entirely sure if this is a problem of the image or a bug in Confluence, but I thought it useful to document this problem here.

Suggestion: knob to enable G1GC collector on this and Jira

Took me a few tries to figure out where the colon should go; it's not the same as the Xms/Xmx parameter setting. But there were some load issues that necessitated giving this another try, and figured it out. It'd be nice to have as a parameter knob for this & the Jira container (if not others too). Thanks!

CATALINA_PARAMETER4 -XX:
CATALINA_PARAMETER_VALUE4 +UseG1GC
CATALINA_PARAMETER5 -XX:
CATALINA_PARAMETER_VALUE5 +UseStringDeduplication

Proposal: Adjusting Server.xml With Envs

You can vote for this feature. Do you need this?

Adjusting the server.xml connector attributes with envs.

Example:

$ docker run -d -p 80:8090 -p 8091:8091 \
    --name confluence \
    -e "CONFLUENCE_CONNECTOR_PROPERTY1=proxyPort" \
    -e "CONFLUENCE_CONNECTOR_VALUE1=80" \
    -e "CONFLUENCE_CONNECTOR_PROPERTY2=proxyName" \
    -e "CONFLUENCE_CONNECTOR_VALUE2=confluence.example.org" \
    blacklabelops/confluence

Error when using OpenJ9

This occurs at launch (after entering license key) when usinng the OpenJ9 JVM:

com.atlassian.config.ConfigurationException: Error creating bean with name 'platformInitializer' defined in URL [jar:file:/opt/atlassian/confluence/confluence/WEB-INF/lib/confluence-6.15.9.jar!/monitoringContext.xml]: Invocation of init method failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'platformInitializerServer' defined in URL [jar:file:/opt/atlassian/confluence/confluence/WEB-INF/lib/confluence-6.15.9.jar!/monitoringContext.xml]: Cannot resolve reference to bean 'javaMemoryMonitor' while setting constructor argument with key [4]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'javaMemoryMonitor' defined in URL [jar:file:/opt/atlassian/confluence/confluence/WEB-INF/lib/confluence-6.15.9.jar!/monitoringContext.xml]: Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.atlassian.confluence.internal.diagnostics.JavaMemoryMonitor]: Constructor threw exception; nested exception is java.lang.ClassCastException: com.ibm.lang.management.internal.ExtendedThreadMXBeanImpl incompatible with com.sun.management.ThreadMXBean
	at com.atlassian.confluence.setup.actions.AbstractSetupAction.transitionFromColdToVacantState(AbstractSetupAction.java:162)
	at com.atlassian.confluence.setup.actions.SetupEmbeddedDatabaseAction.setupDatabase(SetupEmbeddedDatabaseAction.java:19)
	at com.atlassian.confluence.setup.actions.AbstractDatabaseCreationAction.execute(AbstractDatabaseCreationAction.java:33)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:168)
	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
	at com.atlassian.confluence.core.ConfluenceLicenseInterceptor.intercept(ConfluenceLicenseInterceptor.java:65)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
	at com.atlassian.confluence.validation.MessageHolderInterceptor.intercept(MessageHolderInterceptor.java:37)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
	at com.atlassian.confluence.util.LoggingContextInterceptor.intercept(LoggingContextInterceptor.java:44)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
	at com.atlassian.confluence.core.CancellingInterceptor.intercept(CancellingInterceptor.java:21)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
	at com.atlassian.confluence.xwork.HttpMethodValidationInterceptor.intercept(HttpMethodValidationInterceptor.java:68)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
	at com.atlassian.confluence.security.websudo.WebSudoInterceptor.intercept(WebSudoInterceptor.java:34)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
	at com.atlassian.confluence.themes.ThemeContextInterceptor.intercept(ThemeContextInterceptor.java:35)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
	at com.atlassian.confluence.security.actions.PermissionCheckInterceptor.intercept(PermissionCheckInterceptor.java:96)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
	at com.atlassian.confluence.setup.webwork.BootstrapAwareInterceptor.intercept(BootstrapAwareInterceptor.java:21)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
	at com.atlassian.confluence.user.actions.UserAwareInterceptor.intercept(UserAwareInterceptor.java:53)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
	at com.atlassian.confluence.pages.actions.CommentAwareInterceptor.intercept(CommentAwareInterceptor.java:39)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
	at com.atlassian.confluence.pages.actions.PageAwareInterceptor.intercept(PageAwareInterceptor.java:68)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
	at com.atlassian.confluence.spaces.actions.SpaceAwareInterceptor.intercept(SpaceAwareInterceptor.java:71)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
	at com.atlassian.confluence.security.interceptors.ConfluenceAccessInterceptor.intercept(ConfluenceAccessInterceptor.java:31)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
	at com.atlassian.confluence.xwork.FlashScopeInterceptor.intercept(FlashScopeInterceptor.java:21)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
	at com.atlassian.confluence.core.actions.LastModifiedInterceptor.intercept(LastModifiedInterceptor.java:27)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
	at com.atlassian.confluence.core.ConfluenceAutowireInterceptor.intercept(ConfluenceAutowireInterceptor.java:44)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
	at com.atlassian.xwork.interceptors.XWorkTransactionInterceptor.intercept(XWorkTransactionInterceptor.java:58)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
	at com.atlassian.confluence.xwork.SetupIncompleteInterceptor.intercept(SetupIncompleteInterceptor.java:52)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
	at com.atlassian.confluence.security.interceptors.SecurityHeadersInterceptor.intercept(SecurityHeadersInterceptor.java:39)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
	at com.atlassian.confluence.setup.actions.SetupCheckInterceptor.intercept(SetupCheckInterceptor.java:27)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
	at com.opensymphony.xwork.DefaultActionProxy.execute(DefaultActionProxy.java:115)
	at com.atlassian.confluence.servlet.ConfluenceServletDispatcher.serviceAction(ConfluenceServletDispatcher.java:56)
	at com.opensymphony.webwork.dispatcher.ServletDispatcher.service(ServletDispatcher.java:199)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.atlassian.confluence.web.filter.DebugFilter.doFilter(DebugFilter.java:46)
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:51)
	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:45)
	at com.atlassian.johnson.plugin.servlet.filter.JohnsonServletFilterModuleContainerFilter.doFilter(JohnsonServletFilterModuleContainerFilter.java:50)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.atlassian.confluence.util.message.MessagesDecoratorFilter.doFilter(MessagesDecoratorFilter.java:64)
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129)
	at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77)
	at com.atlassian.confluence.util.profiling.ProfilingSiteMeshFilter.doFilter(ProfilingSiteMeshFilter.java:50)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:51)
	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:45)
	at com.atlassian.johnson.plugin.servlet.filter.JohnsonServletFilterModuleContainerFilter.doFilter(JohnsonServletFilterModuleContainerFilter.java:50)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.atlassian.confluence.jmx.JmxFilter.doFilter(JmxFilter.java:97)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.atlassian.confluence.cache.TransactionalCacheFactoryCleanupFilter.doFilter(TransactionalCacheFactoryCleanupFilter.java:22)
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.atlassian.core.filters.ServletContextThreadLocalFilter.doFilter(ServletContextThreadLocalFilter.java:17)
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.atlassian.confluence.util.UserLoggingContextFilter.doFilter(UserLoggingContextFilter.java:32)
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.atlassian.confluence.util.UserNameHeaderFilter.doFilter(UserNameHeaderFilter.java:25)
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.atlassian.confluence.web.filter.MauEventFilter.doFilterInternal(MauEventFilter.java:34)
	at com.atlassian.confluence.web.filter.AbstractStaticResourceAwareFilter.doFilter(AbstractStaticResourceAwareFilter.java:43)
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.atlassian.confluence.util.UserThreadLocalFilter.doFilter(UserThreadLocalFilter.java:39)
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.atlassian.confluence.web.filter.ConfluenceTimeoutFilter.doFilter(ConfluenceTimeoutFilter.java:57)
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.atlassian.seraph.filter.SecurityFilter.doFilter(SecurityFilter.java:88)
	at com.atlassian.confluence.web.filter.ConfluenceSecurityFilter.applyFilter(ConfluenceSecurityFilter.java:40)
	at com.atlassian.confluence.web.filter.ConfluenceSecurityFilter.doFilter(ConfluenceSecurityFilter.java:29)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.atlassian.confluence.web.filter.ThreadLocalCacheFilter.doFilter(ThreadLocalCacheFilter.java:25)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.atlassian.confluence.util.AbstractBootstrapHotSwappingFilter$SwapOnBootstrapFilter.doFilter(AbstractBootstrapHotSwappingFilter.java:45)
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
	at com.atlassian.confluence.util.AbstractBootstrapHotSwappingFilter.doFilter(AbstractBootstrapHotSwappingFilter.java:35)
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.atlassian.seraph.filter.BaseLoginFilter.doFilter(BaseLoginFilter.java:148)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:51)
	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:45)
	at com.atlassian.johnson.plugin.servlet.filter.JohnsonServletFilterModuleContainerFilter.doFilter(JohnsonServletFilterModuleContainerFilter.java:50)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.atlassian.confluence.util.ClusterHeaderFilter.doFilter(ClusterHeaderFilter.java:56)
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.atlassian.confluence.web.filter.ConfluenceOpenSessionInViewFilter.doFilterInternal(ConfluenceOpenSessionInViewFilter.java:38)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.atlassian.confluence.util.ConfluenceErrorFilter.doFilter(ConfluenceErrorFilter.java:24)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.atlassian.util.profiling.filters.ProfilingFilter.doFilter(ProfilingFilter.java:99)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.atlassian.confluence.core.datetime.RequestTimeThreadLocalFilter.doFilter(RequestTimeThreadLocalFilter.java:37)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.atlassian.core.filters.cache.AbstractCachingFilter.doFilter(AbstractCachingFilter.java:31)
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:51)
	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:45)
	at com.atlassian.johnson.plugin.servlet.filter.JohnsonServletFilterModuleContainerFilter.doFilter(JohnsonServletFilterModuleContainerFilter.java:50)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.atlassian.confluence.tenant.TenantGateFilter.lambda$doFilter$0(TenantGateFilter.java:35)
	at com.atlassian.confluence.tenant.TenantGateFilter$$Lambda$103.00000000E00031C0.call(Unknown Source)
	at com.atlassian.confluence.tenant.TenantGate$3.call(TenantGate.java:145)
	at com.atlassian.confluence.tenant.TenantGateFilter.doFilter(TenantGateFilter.java:37)
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.atlassian.confluence.util.MobileAppRequestFilter.doFilter(MobileAppRequestFilter.java:36)
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.atlassian.confluence.internal.web.filter.spring.IgnoreWebAsyncManagerFilter.doFilter(IgnoreWebAsyncManagerFilter.java:59)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.atlassian.confluence.web.filter.validateparam.RequestParamValidationFilter.doFilter(RequestParamValidationFilter.java:51)
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.atlassian.confluence.web.filter.TranslationModeFilter.doFilter(TranslationModeFilter.java:39)
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.atlassian.confluence.plugin.servlet.filter.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:71)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.atlassian.confluence.web.filter.LanguageExtractionFilter.doFilter(LanguageExtractionFilter.java:39)
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.atlassian.confluence.impl.vcache.VCacheRequestContextFilter.doFilter(VCacheRequestContextFilter.java:58)
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.atlassian.confluence.util.LoggingContextFilter.doFilter(LoggingContextFilter.java:33)
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.atlassian.confluence.util.RequestCacheThreadLocalFilter.doFilter(RequestCacheThreadLocalFilter.java:59)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.atlassian.confluence.web.filter.ZipkinTracingFilter.doFilter(ZipkinTracingFilter.java:54)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.atlassian.confluence.web.filter.ResponseOutputStreamFilter.doFilter(ResponseOutputStreamFilter.java:25)
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.atlassian.johnson.filters.AbstractJohnsonFilter.doFilter(AbstractJohnsonFilter.java:59)
	at com.atlassian.confluence.web.ConfluenceJohnsonFilter.doFilter(ConfluenceJohnsonFilter.java:32)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.atlassian.confluence.setup.ConfluenceEncodingFilter.doFilterInternal(ConfluenceEncodingFilter.java:35)
	at com.atlassian.confluence.web.filter.AbstractStaticResourceAwareFilter.doFilter(AbstractStaticResourceAwareFilter.java:43)
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.atlassian.core.filters.HeaderSanitisingFilter.doFilter(HeaderSanitisingFilter.java:37)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.atlassian.confluence.servlet.FourOhFourErrorLoggingFilter.doFilter(FourOhFourErrorLoggingFilter.java:64)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.atlassian.confluence.internal.diagnostics.HttpRequestMonitoringFilter.doFilter(HttpRequestMonitoringFilter.java:35)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.atlassian.confluence.web.filter.DebugFilter.doFilter(DebugFilter.java:46)
	at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
	at org.apache.catalina.valves.StuckThreadDetectionValve.invoke(StuckThreadDetectionValve.java:206)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:853)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1587)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:819)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'platformInitializer' defined in URL [jar:file:/opt/atlassian/confluence/confluence/WEB-INF/lib/confluence-6.15.9.jar!/monitoringContext.xml]: Invocation of init method failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'platformInitializerServer' defined in URL [jar:file:/opt/atlassian/confluence/confluence/WEB-INF/lib/confluence-6.15.9.jar!/monitoringContext.xml]: Cannot resolve reference to bean 'javaMemoryMonitor' while setting constructor argument with key [4]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'javaMemoryMonitor' defined in URL [jar:file:/opt/atlassian/confluence/confluence/WEB-INF/lib/confluence-6.15.9.jar!/monitoringContext.xml]: Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.atlassian.confluence.internal.diagnostics.JavaMemoryMonitor]: Constructor threw exception; nested exception is java.lang.ClassCastException: com.ibm.lang.management.internal.ExtendedThreadMXBeanImpl incompatible with com.sun.management.ThreadMXBean
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1631)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:742)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543)
	at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:443)
	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:325)
	at com.atlassian.config.spring.BootstrappedContainerContext.refresh(BootstrappedContainerContext.java:22)
	at com.atlassian.confluence.tenant.TenantedContainerContext.refresh(TenantedContainerContext.java:24)
	at com.atlassian.confluence.setup.actions.AbstractSetupAction.lambda$transitionFromColdToVacantState$0(AbstractSetupAction.java:152)
	at com.atlassian.confluence.setup.actions.AbstractSetupAction$$Lambda$141.00000000AC10A740.run(Unknown Source)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at com.atlassian.confluence.tenant.TenantGate$3.call(TenantGate.java:145)
	at com.atlassian.confluence.setup.actions.AbstractSetupAction.transitionFromColdToVacantState(AbstractSetupAction.java:159)
	... 257 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'platformInitializerServer' defined in URL [jar:file:/opt/atlassian/confluence/confluence/WEB-INF/lib/confluence-6.15.9.jar!/monitoringContext.xml]: Cannot resolve reference to bean 'javaMemoryMonitor' while setting constructor argument with key [4]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'javaMemoryMonitor' defined in URL [jar:file:/opt/atlassian/confluence/confluence/WEB-INF/lib/confluence-6.15.9.jar!/monitoringContext.xml]: Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.atlassian.confluence.internal.diagnostics.JavaMemoryMonitor]: Constructor threw exception; nested exception is java.lang.ClassCastException: com.ibm.lang.management.internal.ExtendedThreadMXBeanImpl incompatible with com.sun.management.ThreadMXBean
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:359)
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:108)
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveManagedList(BeanDefinitionValueResolver.java:382)
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:157)
	at org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:634)
	at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:145)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1198)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1100)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:511)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
	at com.atlassian.confluence.cluster.ClusterAwareFactoryBean.getSingleMatchingBean(ClusterAwareFactoryBean.java:140)
	at com.atlassian.confluence.cluster.ClusterAwareFactoryBean.getMatchingImplementationBean(ClusterAwareFactoryBean.java:87)
	at com.atlassian.confluence.cluster.ClusterAwareFactoryBean.createInstance(ClusterAwareFactoryBean.java:77)
	at org.springframework.beans.factory.config.AbstractFactoryBean.afterPropertiesSet(AbstractFactoryBean.java:135)
	at com.atlassian.confluence.cluster.ClusterAwareFactoryBean.afterPropertiesSet(ClusterAwareFactoryBean.java:57)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1689)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1627)
	... 275 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'javaMemoryMonitor' defined in URL [jar:file:/opt/atlassian/confluence/confluence/WEB-INF/lib/confluence-6.15.9.jar!/monitoringContext.xml]: Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.atlassian.confluence.internal.diagnostics.JavaMemoryMonitor]: Constructor threw exception; nested exception is java.lang.ClassCastException: com.ibm.lang.management.internal.ExtendedThreadMXBeanImpl incompatible with com.sun.management.ThreadMXBean
	at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:279)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1198)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1100)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:511)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:351)
	... 295 more
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.atlassian.confluence.internal.diagnostics.JavaMemoryMonitor]: Constructor threw exception; nested exception is java.lang.ClassCastException: com.ibm.lang.management.internal.ExtendedThreadMXBeanImpl incompatible with com.sun.management.ThreadMXBean
	at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:154)
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:122)
	at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:271)
	... 304 more
Caused by: java.lang.ClassCastException: com.ibm.lang.management.internal.ExtendedThreadMXBeanImpl incompatible with com.sun.management.ThreadMXBean
	at com.atlassian.confluence.internal.diagnostics.JavaMemoryMonitor.<init>(JavaMemoryMonitor.java:95)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:142)
	... 306 more

Milestone-1.0 Development Features

Release Features:

  1. New Base Image: blacklabelops/alpine:3.5
  2. New Java Base Image: blacklabelops/java:jre.8
  3. Added Metadata Labels to image
  4. New scripts capable of waiting for database

Waiting For Database

Feature is implemented in alpine base image and described here:
https://github.com/blacklabelops/baseimages/blob/master/alpine/README.md#blacklabelops-dockerwait-feature

Metadata Labels

Can be seen with `docker inspect ``

Example:

"com.blacklabelops.application.confluence.groupid": "1000",
"com.blacklabelops.application.confluence.userid": "1000",
"com.blacklabelops.application.confluence.version": "-",
"com.blacklabelops.application.name.glibc": "glibc",
"com.blacklabelops.application.name.java": "java",
"com.blacklabelops.application.version.glibc": "2.25-r0",
"com.blacklabelops.application.version.java": "jre8-121-b13",
"com.blacklabelops.image.builddate.alpine": "23/02/2017-21:36+0100",
"com.blacklabelops.image.builddate.confluence": "undefined",
"com.blacklabelops.image.builddate.java": "23/02/2017-23:08+0100",
"com.blacklabelops.image.name.alpine": "alpine-base-image",
"com.blacklabelops.image.name.java": "java-jre-base-image",
"com.blacklabelops.image.os": "alpine",
"com.blacklabelops.image.osversion": "3.5",
"com.blacklabelops.maintainer.email": "[email protected]",
"com.blacklabelops.maintainer.name": "Steffen Bleul",
"com.blacklabelops.support": "http://support.blacklabelops.com/",
"maintainer": "Steffen Bleul <[email protected]>"

question for account : password of default user "confluence" and "root"

1st try: run stop-confluence.sh, it fails in sub scripts, in result, I think it needs permission "su -"
2nd try: su fails, the error pops up "must be suid to work properly", when trying to change account and similar jobs, I think this is from busybox configuration.
3rd try: try to something more, but need root permission...

I'd like to know password of default user "confluence" and "root".

Any way i could help you provide builds for latest 5.5.x 5.6.x 5.7.x and 5.8.x?

We are using your image to test against different confluence versions, down to 5.5.x

Any way we could build 4 new version:

  • 5.5.7
  • 5.6.6
  • 5.7.6
  • 5.8.18

Thos are just the latest patch versions of the minors. AFAICs a PR does not help you, since you just have a history of images, no branches.

I guess the only way this can be done is just changing the Dockerfile https://github.com/blacklabelops/confluence/blob/master/Dockerfile#L4, build and push - but thats just something only you can do, du to the permissions.

How could we solve this?

Java VM limits should match (per Atlassian recommendation)

The current blacklabelops docker-compose.yaml Java VM settings are as follows:

    environment:
      - 'CATALINA_OPTS= -Xms256m -Xmx1g'

The Atlassian recommendations on this page state:

In the general case, both Jira & Confluence users will benefit from setting the minimum and maximum values identical

So it seems that this should be changed to:

    environment:
      - 'CATALINA_OPTS= -Xms1g -Xmx1g'

Same applies to the JIRA config... although (for JIRA) I do wonder at the blacklabelops default Xmx value of 1 GB, when the general guidance from Atlassian themselves is:

Granting Jira applications too much memory can impact performance negatively, so it is best to start with 768 MB, and make modest increases as necessary

Bumping to 1 GB seems reasonable to me, but... Java isn't my thing (thankfully) and I'm wary of direct guidance saying not to allocate too much!

Broken user directory link between Confluence and JIRA containers

The question is: How do you configure the container(s) so that JIRA can be used for User management?

More detail...

I am using both the blacklabelops/jira and blacklabelops/confluence containers. Jira has been linked to Confluence, with the intent that Jira be used as the User server/directory.

fwiw, I am also running behind an nginx proxy using letsencrypt (using steveltn/https-portal).

Initial installation and usage work great for the initial admin user, but users created beyond the initial user cannot log into Jira.

More specifically, synchronizing the user directory from the Jira container (in Confluence Administration -> User Directories, for the Remote Jira directory) fails with a cryptic error:

Synchronisation failed. See server logs for details.

... but the logs aren't super helpful (I think the request is Forbidden for some reason).

I'm pretty sure this must be due to the docker container configurations, but am not sure.

I've found a few pages online where @blacklabelops was having similar issues, but they are pretty old (early 2016) and have not been helpful for me yet:

Those both indicate that the cacert needs to be updated, but 1) I'd be surprised if letsencrypt isn't in there by now, and 2) I can't seem to even view the /opt/jira/jre/lib/security/cacerts file inside the container without the container hanging!

How do you configure the container(s) so that JIRA can be used for User management?

Make ports configurable

Hi, when trying to start two instances of Confluence on the same host, you run into the problem of the default port exposed twice which means you have to manually edit both containers in order to get it to work. I would be nice if you could set the confluence standard and synchrony port through ENV exactly like CONFLUENCE_PROXY_PORT so you could start an unlimited number of servers at the same time

Repository Deprecated

I will stop supporting and implementing Docker images starting in early 2019.

Repositories will be transferred to blacklabelops-legacy and archived for read only purpose.

The following repositories and images are affected:

January 2019

  • blacklabelops/crowd
  • blacklabelops/nginx
  • blacklabelops/bitbucket
  • blacklabelops/java
  • blacklabelops/letsencrypt
  • blacklabelops/postgres

March 2019

  • blacklabelops/baseimages
  • blacklabelops/confluence
  • blacklabelops/jira
  • blacklabelops/volumerize
  • blacklabelops/logrotate

Blacklabelops Confluence Alpine

I have ported my blacklabelops/jira image to alpine.

  • Base image is blacklabelops/jre8 (Alpine Oracle JDK)
  • Similar Environment variable option.

Would be great to have an analogous blacklabelops/confluence. Therefore, migrating this rewrapper to a fully fledged Dockerized Confluence.

Todo:

  • Adapt Dockerfile
  • Create circle.yml (Similar Testing)
  • Formulate readme.md analogous to blacklabelops/jira including all databse demos.
  • Copy scripts from scriptfolder scripts
  • Copy and adapt scripts from scriptfolder imagescripts

xmlstarlet breaks server.xml

if I use proxy variables, the server.xml will be broken and Confluence fails with

10-Jul-2017 18:15:20.715 WARNING [main] org.apache.catalina.startup.Catalina.load Catalina.start using conf/server.xml: Error at (14, 19) : addChild: Child name '/confluence' is not unique

If I edit server.xml manually, everything is fine..!?

Cannot install it with docker-compose

i filled up the environment correctly

i reached the webinterface where i can setup my licence
but after that i got the following stacktrace , what is the problem ?

HTTP Status 500 – Internal Server Error
Type Exception Report

Message Unable to register MBean [com.atlassian.confluence.jmx.TaskQueueWrapper@7e385cde] with key 'Confluence:name=MailTaskQueue'; nested exception is javax.management.InstanceAlreadyExistsException: Confluence:name=MailTaskQueue

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception

com.atlassian.config.ConfigurationException: Unable to register MBean [com.atlassian.confluence.jmx.TaskQueueWrapper@7e385cde] with key 'Confluence:name=MailTaskQueue'; nested exception is javax.management.InstanceAlreadyExistsException: Confluence:name=MailTaskQueue
	com.atlassian.confluence.setup.actions.AbstractSetupAction.transitionFromColdToVacantState(AbstractSetupAction.java:167)
	com.atlassian.confluence.setup.actions.SetupEmbeddedDatabaseAction.setupDatabase(SetupEmbeddedDatabaseAction.java:30)
	com.atlassian.confluence.setup.actions.AbstractDatabaseCreationAction.execute(AbstractDatabaseCreationAction.java:33)
	com.atlassian.confluence.setup.actions.SetupEmbeddedDatabaseAction.execute(SetupEmbeddedDatabaseAction.java:25)
	com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:168)
	com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
	com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
	com.atlassian.xwork.interceptors.XsrfTokenInterceptor.intercept(XsrfTokenInterceptor.java:120)
	com.atlassian.confluence.xwork.ConfluenceXsrfTokenInterceptor.intercept(ConfluenceXsrfTokenInterceptor.java:30)
	com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)
	com.atlassian.confluence.core.ConfluenceLicenseInterceptor.intercept(ConfluenceLicenseInterceptor.java:65)
	com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:165)

teamatldocker vs blacklabelops

Sorry to use the issue tracker this way, but we're still running 6.13.1 of the blacklabelops/confluence image. Can the teamatldocker 7.0+ images be safely used as a drop-in replacement?

Is this project abandoned ? / provide new versions

Hi! I've been using your docker images in the past with great success. Just now I came across this security advisory
https://confluence.atlassian.com/doc/confluence-security-advisory-2021-08-25-1077906215.html#
and wanted to update to the newest version, realizing that no docker images for newer version exists.
So I'm wondering if you maybe just didn't got notice about new versions or the project is actually discontinued and I need to look somewhere else?

Thanks for clarifying!

Http 404 not found after Confluence Update

Hey,
After I have updated my confluence Version from 6.13.4 to 6.15.9 i am getting a 404 not found error. Any idea why?. Is it possible to do an extra tag on docker hub for 6.13.7?. Kind regards and many thanks Michael.

Is my confluence Updated ?

Hi,
thanks for you work, i use you images for my company since 2 month and it's working like a charm !

I have a bug in confluence about inline comments in atatchments that can't be deleted, on atlassian support it's like to be fixed in 6.6.1, but on my confluence footer i see that version is 6.5.0, saw it in system informations too. And my bug is still here, so i think my version is still 6.5.0

Is there a update script i need to launch or maybe a variable i need to set ?
i force pull the :latest image on every update, but it maybe have no effect on already existent volumes ?

i actually use mounts on :

|/var/atlassian/confluence|
|/opt/atlassian/confluence|

Docker Container crashes because of no space left in volume

Hi,

we have the image running, but since a couple of days, it always stops and says
volumen out of space
the server has about 2 TB free diskspace - do you have an idea?

Can't find anything about that issue within docker :/

Thanks Philipp

Reset password

Is there a way to reset or override the current user/password through environment variables?

External PostgreSQL Server

Hey,

i need some help with the database connection.

Im running a plesk installation and run the docker container on a domain. Works fine, but i can't connect to my external PostgreSQL Server.

If i try to setup the database, i got an error:

Can't reach database server or port
SQLState - 08001
org.postgresql.util.PSQLException: The connection attempt failed.

Connection to database from my personal PC is no problem and works fine.

Im not a docker expert, so i need some extra config to support external databases? Open a port or something?

Thank you!

Build problem with Confluence 6.12.0

There is currently a problem with the certificate import.

This seems to be an issue with the latest Confluence version. Build is running on errors.

I will take the opportunity to convert this into a CircleCI build process.

The new version will be unavailable until this is resolved.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.