• Stars
    star
    375
  • Rank 110,642 (Top 3 %)
  • Language
    Shell
  • License
    Apache License 2.0
  • Created over 9 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Docker images for the camunda BPM platform

Camunda Platform Docker images

Use our GitHub issue tracker for bug reports or feature requests. For help requests, open a help request topic on the Camunda forum or a help request support ticket if you are an enterprise customer.

This Camunda project provides docker images of the latest Camunda Platform releases. The images can be used to demonstrate and test the Camunda Platform or can be extended with own process applications. It is planned to provide images on the official docker registry for every upcoming release, which includes alpha releases.

The Camunda Platform Docker images are wrappers for the pre-packaged Camunda distributions. The pre-packaged distributions are intended for users who want a getting started experience. In case you want to use the Camunda Docker images in production, consider reading our security instructions.

Distributions

You can find more detailed documentation on the pre-packaged (community) distributions that Camunda provides at the following links:

Get started

To start a Docker container of the latest Camunda Platform 7 release:

docker pull camunda/camunda-bpm-platform:latest
docker run -d --name camunda -p 8080:8080 camunda/camunda-bpm-platform:latest

Tasklist, Cockpit, Admin web apps

The three Camunda web apps are accessible through the landing page: http://localhost:8080/camunda-welcome/index.html

The default credentials for admin access to the web apps is:

  • Username: demo
  • Password: demo

REST API

The Camunda Rest-API is accessible through: http://localhost:8080/engine-rest

See the REST API documentation for more details on how to use it.

Note: The REST API does not require authentication by default. Follow the instructions from the documentation to enable authentication for the REST API.

Supported tags/releases

The following tag schema is used. The user has the choice between different application server distributions of Camunda Platform.

  • latest, ${DISTRO}-latest: Always the latest minor release of Camunda Platform.
  • SNAPSHOT, ${VERSION}-SNAPSHOT, ${DISTRO}-SNAPSHOT, ${DISTRO}-${VERSION}-SNAPSHOT: The latest SNAPSHOT version of Camunda Platform, which is not released yet.
  • ${VERSION}, ${DISTRO}-${VERSION}: A specific version of Camunda Platform.

${DISTRO} can be one of the following:

  • tomcat
  • wildfly
  • run

If no ${DISTRO} is specified, the tomcat distribution is used. For all available tags see the docker hub tags.

Camunda Platform 7 configuration

You can find the complete Camunda documentation at https://docs.camunda.org/.

If you prefer to start your Camunda Docker image right away, you will find the following links useful:

Camunda Docker image configuration

Configuration of the run distribution

Because run is a Spring Boot-based distribution, it can be configured through the respective environment variables. For example:

  • SPRING_DATASOURCE_DRIVER_CLASS_NAME the database driver class name, supported are h2 (default), mysql, and postgresql:
    • h2: DB_DRIVER=org.h2.Driver
    • mysql: DB_DRIVER=com.mysql.cj.jdbc.Driver
    • postgresql: DB_DRIVER=org.postgresql.Driver
  • SPRING_DATASOURCE_URL the database jdbc url
  • SPRING_DATASOURCE_USERNAME the database username
  • SPRING_DATASOURCE_PASSWORD the database password

When not set or otherwise specified, the integrated H2 database is used.

Any other SPRING_* variables can be used to further configure the app. Alternatively, a default.yml file can be mounted to /camunda/configuration/default.yml. More information on configuring Spring Boot applications can be found in the Spring Boot documentation.

The following environment variables are supported for convenience and compatibility and are internally mapped to SPRING_DATASOURCE_* variables when provided:

  • DB_DRIVER
  • DB_USERNAME
  • DB_PASSWORD
  • DB_URL
  • DB_PASSWORD_FILE

The JMX_PROMETHEUS configuration is not supported, and while DEBUG can be used to enable debug output, it doesn't start a debug socket.

run supports different startup options to choose whether or not to enable the WebApps, the REST API or Swagger UI. By default, all three are enabled.

Passing startup parameters to enable them selectively can be done by passing any combination of --webapps, --rest or --swaggerui like in the following example:

Enable only web apps:

docker run camunda/camunda-bpm-platform:run ./camunda.sh --webapps

Enable only REST API and Swagger UI:

docker run camunda/camunda-bpm-platform:run ./camunda.sh --rest --swaggerui

Additionally, a --production parameter is supported to switch the configuration to /camunda/configuration/production.yml. This parameter also disables Swagger UI by default.

Java versions

Our docker images are using the latest LTS OpenJDK version supported by Camunda Platform. This currently means:

  • Camunda 7.20 or later will be based on OpenJDK 17.
    • Camunda 7.20 image for Camunda Run is supported only for JDK 17.
  • Camunda 7.12 - 7.19 is based on OpenJDK 11.
    • Camunda 7.19 image for WildFly is supported only for JDK 11 and JDK 17.
  • All previous versions are based on OpenJDK 8.

While all the OpenJDK versions supported by Camunda will work with the exceptions specified above, we will not provide ready to use images for them.

Java options

To override the default Java options the environment variable JAVA_OPTS can be set.

Use docker memory limits

Instead of specifying the Java memory settings it is also possible to instruct the JVM to respect the docker memory settings. As the image uses Java 17 it does not have to be enabled explicitly using the JAVA_OPTS environment variable. If you want to set the memory limits manually you can restore the pre-Java-11-behavior by setting the following environment variable.

JAVA_OPTS="-XX:-UseContainerSupport"

Database environment variables

The used database can be configured by providing the following environment variables:

  • DB_CONN_MAXACTIVE the maximum number of active connections (default: 20)
  • DB_CONN_MAXIDLE the maximum number of idle connections (default: 20)
    • ignored when app server = wildfly or run
  • DB_CONN_MINIDLE the minimum number of idle connections (default: 5)
  • DB_DRIVER the database driver class name, supported are h2, mysql, and postgresql:
    • h2: DB_DRIVER=org.h2.Driver
    • mysql: DB_DRIVER=com.mysql.cj.jdbc.Driver
    • postgresql: DB_DRIVER=org.postgresql.Driver
  • DB_URL the database jdbc url
  • DB_USERNAME the database username
  • DB_PASSWORD the database password
  • DB_VALIDATE_ON_BORROW validate database connections before they are used (default: false)
  • DB_VALIDATION_QUERY the query to execute to validate database connections (default: "SELECT 1")
  • DB_PASSWORD_FILE this supports Docker Secrets. Put here the path of the secret, e.g. /run/secrets/camunda_db_password. Make sure that DB_PASSWORD is not set when using this variable!
  • SKIP_DB_CONFIG skips the automated database configuration to use manual configuration
  • WAIT_FOR wait for a host:port to be available over TCP before starting
  • WAIT_FOR_TIMEOUT how long to wait for the service to be avaiable - defaults to 30 seconds

For example, to use a postgresql docker image as database you can start the platform as follows:

# start postgresql image with database and user configured
docker run -d --name postgresql ...

docker run -d --name camunda -p 8080:8080 --link postgresql:db \
           -e DB_DRIVER=org.postgresql.Driver \
           -e DB_URL=jdbc:postgresql://db:5432/process-engine \
           -e DB_USERNAME=camunda \
           -e DB_PASSWORD=camunda \
           -e WAIT_FOR=db:5432 \
           camunda/camunda-bpm-platform:latest

Another option is to save the database config to an environment file, i.e. db-env.txt:

DB_DRIVER=org.postgresql.Driver
DB_URL=jdbc:postgresql://db:5432/process-engine
DB_USERNAME=camunda
DB_PASSWORD=camunda
WAIT_FOR=db:5432

Use this file to start the container:

docker run -d --name camunda -p 8080:8080 --link postgresql:db \
           --env-file db-env.txt camunda/camunda-bpm-platform:latest

The docker image already contains drivers for h2, mysql, and postgresql. If you want to use other databases, you have to add the driver to the container and configure the database settings manually by linking the configuration file into the container.

To skip the configuration of the database by the docker container and use your own configuration set the environment variable SKIP_DB_CONFIG to a non-empty value:

docker run -d --name camunda -p 8080:8080 -e SKIP_DB_CONFIG=true \
           camunda/camunda-bpm-platform:latest

Waiting for database

Starting the Camunda Platform Docker image requires the database to be already available. This is quite a challenge when the database and Camunda Platform are both docker containers spawned simultaneously, for example, by docker-compose or inside a Kubernetes Pod. To help with that, the Camunda Platform Docker image includes wait-for-it.sh to allow the container to wait until a 'host:port' is ready. The mechanism can be configured by two environment variables:

  • WAIT_FOR: the service host:port to wait for
  • WAIT_FOR_TIMEOUT: how long to wait for the service to be available in seconds

Example with a PostgreSQL container:

docker run -d --name postgresql ...

docker run -d --name camunda -p 8080:8080 --link postgresql:db \
           -e DB_DRIVER=org.postgresql.Driver \
           -e DB_URL=jdbc:postgresql://db:5432/process-engine \
           -e DB_USERNAME=camunda \
           -e DB_PASSWORD=camunda \
           -e WAIT_FOR=db:5432 \
           -e WAIT_FOR_TIMEOUT=60 \
           camunda/camunda-bpm-platform:latest

Volumes

Camunda Platform is installed inside the /camunda directory. Which means the Apache Tomcat configuration files are inside the /camunda/conf/ directory and the deployments on Apache Tomcat are in /camunda/webapps/. The directory structure depends on the application server.

Debug

To enable JPDA inside the container, you can set the environment variable DEBUG=true on startup of the container. This will allow you to connect to the container on port 8000 to debug your application. This is only supported for wildfly and tomcat distributions.

Prometheus JMX Exporter

To enable Prometheus JMX Exporter inside the container, you can set the environment variable JMX_PROMETHEUS=true on startup of the container. This will allow you to get metrics in Prometheus format at <host>:9404/metrics. For configuring exporter you need attach your configuration as a container volume at /camunda/javaagent/prometheus-jmx.yml. This is only supported for wildfly and tomcat distributions.

Change timezone

To change the timezone of the docker container, you can set the environment variable TZ.

docker run -d --name camunda -p 8080:8080 \
           -e TZ=Europe/Berlin \
          camunda/camunda-bpm-platform:latest

Build

You can build a Docker image for a given Camunda Platform version and distribution yourself. If you want to build the community edition (CE), make sure to adjust the settings.xml and remove the camunda-nexus mirror. If you want to build the enterprise edition (EE), check out the dedicated README section.

Build a released version

To build a community image specify the DISTRO and VERSION build argument. Possible values for DISTRO are:

  • tomcat
  • wildfly
  • run (if the Camunda Platform version already supports it)

The VERSION argument is the Camunda Platform version you want to build, i.e. 7.17.0.

docker build -t camunda-bpm-platform \
  --build-arg DISTRO=${DISTRO} \
  --build-arg VERSION=${VERSION} \
  .

Build a SNAPSHOT version

Additionally, you can build SNAPSHOT versions for the upcoming releases by setting the SNAPSHOT build argument to true.

docker build -t camunda-bpm-platform \
  --build-arg DISTRO=${DISTRO} \
  --build-arg VERSION=${VERSION} \
  --build-arg SNAPSHOT=true \
  .

Build an enterprise version

If you are a Camunda enterprise customer, you can build an enterprise version of the Docker image. Set the VERSION build argument to the Camunda version without the ee suffix, i.e. 7.16.1, set the EE build argument to true and the USER and PASSWORD build argument to your enterprise credentials.

It is recommended that you git checkout the branch for the Camunda version you would like to build. For example, if you want to build a Docker image for Camunda version 7.16.3, first execute git checkout 7.16 on this repository.

Note: As the image uses a multi-stage Dockerfile the credentials are not part of the Docker image history of the final image. Be aware that you should not distribute this image outside your company.

docker build -t camunda-bpm-platform \
  --build-arg EE=true \
  --build-arg DISTRO=${DISTRO} \
  --build-arg VERSION=${VERSION} \
  --build-arg USER=${USER} \
  --build-arg PASSWORD=${PASSWORD} \
  .

Build when behind a proxy

You can pass the following arguments to set proxy settings to Maven:

  • MAVEN_PROXY_HOST
  • MAVEN_PROXY_PORT
  • MAVEN_PROXY_USER
  • MAVEN_PROXY_PASSWORD

Example for a released version of a community edition:

docker build -t camunda-bpm-platform \
  --build-arg DISTRO=${DISTRO} \
  --build-arg VERSION=${VERSION} \
  --build-arg MAVEN_PROXY_HOST=${PROXY_HOST} \
  --build-arg MAVEN_PROXY_PORT=${PROXY_PORT} \
  --build-arg MAVEN_PROXY_USER=${PROXY_USER} \
  --build-arg MAVEN_PROXY_PASSWORD=${PROXY_PASSWORD} \
  .

Use cases

Change configuration files

You can use docker volumes to link your own configuration files inside the container. For example, if you want to change the bpm-platform.xml on Apache Tomcat:

docker run -d --name camunda -p 8080:8080 \
           -v $PWD/bpm-platform.xml:/camunda/conf/bpm-platform.xml \
           camunda/camunda-bpm-platform:latest

Add own process application

If you want to add your own process application to the docker container, you can use Docker volumes. For example, if you want to deploy the twitter demo on Apache Tomcat:

docker run -d --name camunda -p 8080:8080 \
           -v /PATH/TO/DEMO/twitter.war:/camunda/webapps/twitter.war \
           camunda/camunda-bpm-platform:latest

This also allows you to modify the app outside the container, and it will be redeployed inside the platform.

Clean distro without web apps and examples

To remove all web apps and examples from the distro and only deploy your own applications or your own configured cockpit also use Docker volumes. You only have to overlay the deployment folder of the application server with a directory on your local machine. So in Apache Tomcat, you would mount a directory to /camunda/webapps/:

docker run -d --name camunda -p 8080:8080 \
           -v $PWD/webapps/:/camunda/webapps/ \
           camunda/camunda-bpm-platform:latest

Extend Docker image

As we release these docker images on the official docker registry it is easy to create your own image. This way you can deploy your applications with docker or provided an own demo image. Just specify in the FROM clause which Camunda image you want to use as a base image:

FROM camunda/camunda-bpm-platform:tomcat-latest

ADD my.war /camunda/webapps/my.war

Branching model

Branches and their roles in this repository:

  • next (default branch) is the branch where new features and bugfixes needed to support the current master of camunda-bpm-platform repo go.
  • 7.x branches get created from next when a Camunda Platform minor version is released. They only receive backports of bugfixes when absolutely necessary.

License

Apache License, Version 2.0

More Repositories

1

camunda-bpm-platform

Flexible framework for workflow and decision automation with BPMN and DMN. Integration with Quarkus, Spring, Spring Boot, CDI.
Java
3,879
star
2

zeebe

Distributed Workflow Engine for Microservices Orchestration
Java
2,979
star
3

camunda-modeler

An integrated modeling solution for BPMN, DMN and Forms based on bpmn.io.
JavaScript
1,451
star
4

camunda-bpm-examples

A collection of usage examples for Camunda Platform intended to get you started quickly
Java
1,003
star
5

camunda-bpm-spring-boot-starter

Camunda BPM bootified!
Java
321
star
6

camunda-platform

Links to Camunda Platform 8 resources, releases, and local development config
TypeScript
240
star
7

camunda-external-task-client-js

Implement your BPMN Service Task in NodeJS.
JavaScript
209
star
8

camunda-modeler-token-simulation-plugin

Token simulation as a plugin for the Camunda Modeler
JavaScript
167
star
9

camunda-modeler-plugins

Plugins for the Camunda Modeler.
JavaScript
161
star
10

camunda-bpmn.js

camunda BPMN 2.0 Javascript libraries
JavaScript
134
star
11

camunda-bpm-webapp

This codebase was merged with https://github.com/camunda/camunda-bpm-platform. Only maintenance branches are active.
128
star
12

feel-scala

FEEL parser and interpreter written in Scala
Scala
115
star
13

camunda-bpmn-js

Embeddable Camunda modeling distributions based on bpmn-js
JavaScript
92
star
14

camunda-docs-manual

Sources of the docs.camunda.org site
HTML
91
star
15

camunda-platform-get-started

Camunda Platform 8 - Get Started Projects
Java
88
star
16

camunda-bpm-assert

This project was moved to https://github.com/camunda/camunda-bpm-platform/tree/master/test-utils/assert
85
star
17

camunda-engine-dmn

Lightweight Execution Engine for DMN (Decision Model and Notation) written in Java.
Java
77
star
18

camunda-bpm-sdk-js

Javascript client library for connecting to camunda BPM REST Api
JavaScript
76
star
19

camunda-platform-helm

Camunda Platform 8 Self-Managed Helm charts
Go
68
star
20

camunda-bpmn-model

BPMN model API written in Java.
Java
66
star
21

camunda-bpmn-moddle

Camunda moddle extensions for BPMN 2.0
JavaScript
62
star
22

camunda-external-task-client-java

This codebase was merged with https://github.com/camunda/camunda-bpm-platform. Only some maintenance branches might still be active.
60
star
23

camunda-webapp-translations

This codebase was moved to https://github.com/camunda-community-hub/camunda-7-webapp-translations/. Only maintenance branches are active.
58
star
24

camunda-docs

Camunda 8 Documentation, including all components and features
MDX
47
star
25

bpmn-for-research

A collection of BPMN diagrams that can be used for research
JavaScript
39
star
26

zeebe-process-test

Testing project for Camunda Platform 8
Java
38
star
27

camunda-get-started-quickstart

Java
37
star
28

camunda-modeler-linter-plugin

Check your BPMN diagrams for common issues
JavaScript
37
star
29

dmn-scala

DMN engine written in Scala
Scala
33
star
30

camunda-spin

Simple API for working with complex data formats such as XML and JSON
Java
30
star
31

connectors

Camunda Connectors
Java
28
star
32

camunda-external-task-client-spring-boot

This codebase was merged with https://github.com/camunda/camunda-bpm-platform. Only some maintenance branches might still be active.
Java
26
star
33

camunda-get-started-spring-boot

Java
25
star
34

camunda-engine-unittest

Unit test template project for camunda engine
Java
25
star
35

camunda-connect

Reusable Java Connectors for HTTP and other things
Java
23
star
36

camunda-commons-ui

Common resources and libraries for camunda web applications
JavaScript
22
star
37

camunda-eclipse-plugin

The Camunda BPMN 2.0 modeling plugin for Eclipse
Java
21
star
38

camunda-archetypes

Maven Archetypes for Camunda BPM
HTML
20
star
39

vault-dump-kv2

Dump Hashicorp Vault KV version 2 inspired by https://github.com/shaneramey/vault-backup
Makefile
17
star
40

camunda-sso-snippets

Camunda BPM Webapp with SSO in for Wildfly/JBoss AS7
Java
15
star
41

zeebe-bpmn-moddle

Zeebe moddle extensions for BPMN 2.0
JavaScript
14
star
42

camunda-dmn-model

DMN model API written in Java.
Java
13
star
43

connector-sdk

SDK for building Camunda Connectors
Java
13
star
44

camunda-docs-theme

Less
13
star
45

technology-radars

🎯 Technology Radars for Camunda teams
13
star
46

camunda-modeler-process-io-specification-plugin

A plug-in that allows you to document input and output specifications for your BPMN processes.
JavaScript
12
star
47

camunda-cockpit-plugins-deprecated

Java
12
star
48

camunda-get-started-java

Get started with camunda BPM. Sources of the Getting Started Guide
Java
12
star
49

camunda-tasklist-ui

A web based interface for camunda BPM platform tasks.
11
star
50

camunda-optimize-examples

A collection of usage examples for Camunda Optimize intended to get you started quickly (e.g. with the plugin system).
Java
11
star
51

camunda-eclipse-standalone

A BPMN Modeler based on the Camunda Eclipse Plug-in
Java
10
star
52

camunda-get-started-spring

Getting Started with camunda BPM and the Spring Framework
Java
9
star
53

blog.camunda.org

The Camunda BPM Team Blog
JavaScript
9
star
54

element-templates-json-schema

JSON Schema for (Camunda) Element Templates
JavaScript
9
star
55

camunda-modeler-plugin-example

Plugin example for the Camunda Modeler. Use this as a starting point for creating your own plugins.
JavaScript
9
star
56

camunda-get-started-javaee

Get started with camunda BPM and Java EE 6. Sources of the Getting Started Guide
Java
9
star
57

connector-template-outbound

Template repository to create Camunda Platform 8 Connectors using Connector SDK
Java
9
star
58

camunda-modeler-custom-linter-rules-plugin

Add custom lint rules to the Camunda Modeler
JavaScript
8
star
59

camunda-docs-static

Contains all un-versioned sections of the documentation
HTML
8
star
60

camunda-platform-tutorials

Step-by-step tutorials to guide Camunda Platform 8 users to certain use cases end-to-end
Java
8
star
61

portainer-templates

Python
8
star
62

form-playground

Camunda Form Playground to simulate forms with input and output data.
JavaScript
5
star
63

bpmnlint-plugin-camunda

Camunda model guidelines, packed as a bpmnlint plug-in.
JavaScript
5
star
64

camunda-dmn-js

Embeddable Camunda modeling distributions based on dmn-js
JavaScript
5
star
65

camunda-get-started-cmmn

Java
4
star
66

camunda-commons

Set of generally useful Java libraries used by camunda open source projects
Java
4
star
67

bower-camunda-bpm-sdk-js

Bower packaging for https://github.com/camunda/camunda-bpm-sdk-js
JavaScript
4
star
68

camunda-release-parent

Pom which can be inherited for camunda releases defining some common release properties
4
star
69

github-backup

Utility for concurrent backups of GitHub organizations repositories.
Go
4
star
70

camunda-bpm-dropwizard

Java
4
star
71

issues

4
star
72

camunda-xml-model

Lightweight toolkit for implementing metamodels in Java
Java
3
star
73

infra-global-github-actions

Small Github Actions maintained by Infra team and used by other teams inside Camunda
Shell
3
star
74

connector-sendgrid

Camunda Cloud SendGrid Connector
Java
3
star
75

connector-kafka

Java
3
star
76

camunda-cockpit-ui

camunda Cockpit user interface
3
star
77

docpad-plugin-links

Advanced linking plugin for DocPad
CoffeeScript
3
star
78

camunda-admin-ui

camunda Admin user interface
3
star
79

camunda-docs-cawemo

HTML
3
star
80

camunda-cmmn-model

CMMN model API written in Java.
Java
3
star
81

camunda-get-started-dmn

Get started with DMN 1.1 and camunda BPM.
Java
3
star
82

connector-slack

Camunda Cloud Slack Connector
Java
2
star
83

camunda-cycle

The BPMN 2.0 roundtrip tool
Java
2
star
84

camunda-bpmn-js-behaviors

Camunda behaviors for bpmn-js
JavaScript
2
star
85

camunda-engine-dmn-benchmark

Benchmark for camunda DMN engine
Java
2
star
86

camunda-engine-dmn-unittest

Unit test template project for Camunda DMN engine
Java
2
star
87

infra-prometheus-statuspage-pusher

Poll Prometheus and update Statuspage component statuses
Go
2
star
88

linting

Linting for the Camunda Desktop and Web Modeler
JavaScript
2
star
89

connector-sqs

SQS Connector for C8
Java
2
star
90

connector-http-json

HTTP JSON Cloud Connector
Java
2
star
91

camunda-dmn-cloud-examples

Code Examples for Camunda DMN Cloud
Java
2
star
92

java-dependency-tree-diff

Adds a comment with the Java Dependency Tree Diff to a PR
Shell
2
star
93

camunda-template-engines-jsr223

JSR 223 compatible Script Engine wrapper for Java Freemarker Template Engine. Find community extensions in the community hub: https://github.com/camunda-community-hub/camunda-7-template-engines-jsr223.
Java
2
star
94

c8-multi-region

Test and configurations concerning c8-multi-region
Go
2
star
95

eslint-plugin-camunda-licensed

Common lint rules Camunda licensed OSS projects.
JavaScript
2
star
96

zeebe-connection-test

A zeebe connection test bed.
JavaScript
1
star
97

connector-google-drive

Java
1
star
98

camunda-bpm-archetype-cockpit-plugin

Java
1
star
99

bpmn-io_wp-plugin

PHP
1
star
100

camunda-bpm-archetype-spring-boot-demo

HTML
1
star